----- test.d ----- class C { version( VER_A ) { void foo(T)( T[] data) { static if( is( T == ushort) || is( T == uint) ) { } else { static assert( false ); } } } } ----- compile with -c option ----- test.di ----- template init(T) { void foo( T[] data) { static if(is(T == ushort) || is(T == uint)) else static assert(false); } } ---- error "found 'else' instead of statement"
What exactly is the bug you're reporting? (a) that some unspecified process is generating this syntactically incorrect .di file? IWC please give the full command line, and double-check that the .d file you posted really is exactly the one you used. (b) that the error message is missing its filename/line number? (c) something else entirely?
The original bug was that dmd -H test.d produced the defective test.di file. This was fixed in dmd1.039 or 1.041. Fixed in D2 at the same time.