Changeset 209

Show
Ignore:
Timestamp:
07/06/06 07:05:40 (2 years ago)
Author:
Don Clugston
Message:

Finally, symbolof!() works!

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/meta/demangle.d

    r208 r209  
    239239                static if (getLnameConsumed!(str)==str.length) { 
    240240                    const char [] getQualifiedName = prettyLname!(getLname!(str), wantQualifiedNames); 
    241                 } else const char [] getQualifiedName = getQualifiedName!(str[getLnameConsumed!(str) .. $], wantQualifiedNames, "");            
     241                } else static if ( isdigit!(( str[getLnameConsumed!(str)] ))) { 
     242                    const char [] getQualifiedName = getQualifiedName!(str[getLnameConsumed!(str) .. $], wantQualifiedNames, ""); 
     243                } else const char [] getQualifiedName = prettyLname!(getLname!(str), wantQualifiedNames); 
    242244           } else { 
    243245           // Qualified and pretty names 
  • trunk/meta/nameof.d

    r208 r209  
    9999} 
    100100 
    101  
    102101/** 
    103102 * Returns the qualified name of the symbol A. 
     
    160159static assert( prettytypeof!(OuterClass.SomeClass) == "class " ~ THISFILE ~".OuterClass.SomeClass"); 
    161160 
     161// Test that it works with module names (for example, this module) 
     162static assert( qualifiednameof!(meta.nameof) == "meta.nameof"); 
     163static assert( symbolnameof!(meta.nameof) == "nameof"); 
     164 
    162165static assert( prettynameof!(SomeInt) 
    163166    == "enum " ~ THISFILE ~ ".SomeEnum " ~ THISFILE ~ ".SomeInt"); 
    164167static assert( qualifiednameof!(OuterClass) == THISFILE ~".OuterClass"); 
    165 //static assert( symbolnameof!(SomeInt) == "SomeInt"); 
     168static assert( symbolnameof!(SomeInt) == "SomeInt"); 
    166169 
    167170static assert( prettynameof!(inner!( MyInt!(68u) )) 
    168171    ==  "class " ~ THISFILE ~ ".inner!(" ~ THISFILE ~ ".MyInt!(uint = 68)).inner"); 
     172static assert( symbolnameof!(inner!( MyInt!(68u) )) ==  "inner"); 
    169173static assert( prettynameof!(ClassTemplate!(OuterClass.SomeClass)) 
    170174    == "class "~ THISFILE ~ ".ClassTemplate!(class "~ THISFILE ~ ".OuterClass.SomeClass).ClassTemplate"); 
     175static assert( symbolnameof!(ClassTemplate!(OuterClass.SomeClass))  == "ClassTemplate"); 
    171176 
    172177// Extern(D) declarations have full type information. 
     
    175180static assert( prettynameof!(pig) == "int " ~ THISFILE ~ ".pig()"); 
    176181static assert( prettynameof!(pog) == "int " ~ THISFILE ~ ".pog"); 
     182static assert( symbolnameof!(pig) == "pig"); 
    177183 
    178184// Extern(Windows) declarations contain no type information. 
     
    197203            ~ THISFILE ~ ".OuterClass).aardvark(short).wolf"); 
    198204        static assert(qualifiednameof!(wolf)== THISFILE ~ ".aardvark.aardvark.wolf"); 
     205        static assert( symbolnameof!(wolf) == "wolf"); 
    199206        return 3; 
    200207        } 
     
    214221        static assert(prettynameof!(fox)== "class void " ~ THISFILE ~ ".wolf().fox!(cfloat, int = 21).fox"); 
    215222        static assert(qualifiednameof!(fox)== THISFILE ~ ".wolf.fox.fox"); 
    216 
    217  
    218 
     223        static assert(symbolnameof!(fox)== "fox"); 
     224
     225 
     226