Nested functions bug
    Frits van Bommel 
    fvbommel at REMwOVExCAPSs.nl
       
    Thu Jan 18 05:37:50 PST 2007
    
    
  
Alexei Averchenko wrote:
> I discovered an issue with nested functions: they must be declared
> before used. Is this a bug or a lenguage limitation. Whatever it is,
> please resolve this issue, because it screwes the very idea of nested
> functions, making it hard to read and maintain the code. Thanks in
> advance.
http://www.digitalmars.com/d/function.html#nested (at the end of the 
section):
*****
Unlike module level declarations, declarations within function scope are 
processed in order. This means that two nested functions cannot mutually 
call each other:
void test()
{
     void foo() { bar(); }	// error, bar not defined
     void bar() { foo(); }	// ok
}
The solution is to use a delegate:
void test()
{
     void delegate() fp;
     void foo() { fp(); }
     void bar() { foo(); }
     fp = &bar;
}
Future directions: This restriction may be removed.
*****
So it's a limitation. Someday it may be removed, but until then there's 
a workaround available.
    
    
More information about the Digitalmars-d-bugs
mailing list