[Issue 104] Forward reference error occurs when the -g switch is invoked

Bradley Smith user at domain.invalid
Mon Oct 2 18:31:24 PDT 2006


clayasaurus wrote:
> Walter Bright wrote:
>> d-bugmail at puremagic.com wrote:
>>> http://d.puremagic.com/issues/show_bug.cgi?id=104
>>> ------- Comment #4 from clayasaurus at gmail.com  2006-09-28 09:17 -------
>>> This issue prevents being able to produce debug info if you use
>>> DerelictFreeType library, which is a pretty big issue for a number of 
>>> D game
>>> developers. Who knows how many times I've explained this bug. I'd 
>>> suggest this
>>> as a 1.0 blocker. 
>>
>> Why is it a blocker when it is illegal code anyway? (Foo is undefined.)
> 
> Here is another example, I'm not sure if it is much better.
> 
> 
> struct FT_Var_Named_Style{
> T1_Decoder_Callback f;
> }
> 
> alias int function( T1_DecoderRec decoder ) T1_Decoder_Callback;

What I don't understand is why the code above does not give an 
"T1_DecoderRec undefined" error. Doesn't the compiler require the types 
of arguments in function statements to be defined?

This incorrectly compiles without errors. It should give a Foo undefined 
error. With -g, compiling gives a Foo forward reference error.

   Foofunc f;
   alias int function(Foo) Foofunc;

This correctly doesn't compile. It gives a Foo undefined error.

   alias int function(Foo) Foofunc;
   Foofunc f;

This correctly compiles, but with -g, gives a Foo forward reference error.

   Foofunc f;
   alias int function(Foo) Foofunc;
   alias int Foo;

There appear to be two bugs: the forward reference error, and the 
mishandling of the argument types in function aliases.



More information about the Digitalmars-d-bugs mailing list