Changeset 1163

Show
Ignore:
Timestamp:
05/12/08 21:14:53 (8 months ago)
Author:
asterite
Message:

Some porting from DMD 2.013

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/descent.core/src/descent/core/compiler/IProblem.java

    r1158 r1163  
    664664    int UseTokenInsteadOfTokenWhenComparingWithNull = 453; 
    665665    int VoidDoesNotHaveAnInitializer = 454; 
     666    int FunctionNameExpectedForStartAddress = 455; 
    666667 
    667668} 
  • trunk/descent.core/src/descent/internal/codeassist/SelectionEngine.java

    r1145 r1163  
    1111import descent.core.WorkingCopyOwner; 
    1212import descent.core.compiler.CharOperation; 
    13 import descent.core.dom.ASTNode; 
    1413import descent.core.dom.CompilationUnitResolver; 
    1514import descent.internal.compiler.env.AccessRestriction; 
  • trunk/descent.core/src/descent/internal/compiler/SourceElementParser.java

    r1161 r1163  
    2525import descent.internal.compiler.impl.CompilerOptions; 
    2626import descent.internal.compiler.parser.*; 
    27 import descent.internal.compiler.parser.Package; 
    28 import descent.internal.compiler.parser.ast.ASTNode; 
    2927import descent.internal.compiler.parser.ast.AstVisitorAdapter; 
    3028import descent.internal.compiler.parser.ast.NaiveASTFlattener; 
     
    5048public class SourceElementParser extends AstVisitorAdapter { 
    5149     
     50    private final static TypeParameterInfo[] NO_TYPE_PARAMETERS = new TypeParameterInfo[0]; 
     51     
    5252    public ISourceElementRequestor requestor; 
    5353    protected Module module; 
     
    6060    public boolean diet = true; 
    6161    public boolean recordLineSeparator = false; 
     62     
     63    private Stack<ASTDmdNode> nodeStack = new Stack<ASTDmdNode>(); 
    6264 
    6365    /** 
     
    313315     
    314316    public void visit(AggregateDeclaration node, TemplateDeclaration templateDeclaration) { 
     317        nodeStack.push(node); 
     318         
    315319        switch(node.getNodeType()) { 
    316320        case ASTDmdNode.CLASS_DECLARATION: 
     
    334338     
    335339    private void visit(AggregateDeclaration node, int flags, BaseClasses baseClasses, TemplateDeclaration templateDeclaration) { 
     340        nodeStack.push(node);    
     341         
    336342        TypeInfo info = new TypeInfo(); 
    337343        if (templateDeclaration != null) { 
     
    348354        if (node.ident != null) { 
    349355            info.name = node.ident.ident; 
    350              
    351356            info.nameSourceEnd = endOf(node.ident); 
    352357            info.nameSourceStart = startOf(node.ident); 
    353358        } else { 
    354359            info.name = CharOperation.NO_CHAR; 
     360            if (baseClasses != null && !baseClasses.isEmpty()) { 
     361                BaseClass bc = baseClasses.get(0); 
     362                info.nameSourceStart = bc.start; 
     363                info.nameSourceEnd = bc.start + bc.length; 
     364            } else { 
     365                info.nameSourceStart = info.declarationStart; 
     366                info.nameSourceEnd = info.declarationStart + 5; // class 
     367            } 
    355368        } 
    356369        //info.secondary = !foundType; 
     
    428441        } 
    429442         
     443        nodeStack.push(node); 
     444         
    430445        TypeInfo info = new TypeInfo(); 
    431446        info.declarationStart = startOfDeclaration(node); 
     
    449464    private void visit(FuncDeclaration node, TemplateDeclaration templateDeclaration) { 
    450465        TypeFunction ty = (TypeFunction) node.type; 
    451          
    452         MethodInfo info = new MethodInfo(); 
    453         if (templateDeclaration != null) { 
    454             info.declarationStart = startOfDeclaration(templateDeclaration); 
    455         } else { 
    456             info.declarationStart = startOfDeclaration(node); 
    457         } 
    458         info.modifiers = getFlags(node, node.modifiers); 
    459         if (templateDeclaration != null) { 
    460             info.modifiers |= Flags.AccTemplate; 
    461         } 
    462          
    463         if (ty.varargs == 1) { 
    464             info.modifiers |= Flags.AccVarargs1; 
    465         } else if (ty.varargs == 2) { 
    466             info.modifiers |= Flags.AccVarargs2; 
    467         } 
    468         if (node.ident != null) { 
    469             info.name = node.ident.ident; 
    470             info.nameSourceStart = startOf(node.ident); 
    471             info.nameSourceEnd = endOf(node.ident); 
    472         } else { 
    473             info.name = CharOperation.NO_CHAR; 
    474         } 
    475         info.parameterNames = getParameterNames(ty.parameters); 
    476         info.parameterTypes = getParameterTypes(ty.parameters); 
    477         info.parameterDefaultValues = getParameterDefaultValues(ty.parameters); 
    478         info.returnType = getSignature(ty.next); 
    479         info.signature = getSignature(ty); 
    480         if (templateDeclaration != null) { 
    481             info.typeParameters = getTypeParameters(templateDeclaration.parameters); 
    482         } 
    483          
    484         requestor.enterMethod(info); 
     466        visit(node, templateDeclaration, 0, ty.parameters, node.ident.ident); 
    485467    } 
    486468 
     
    494476    } 
    495477     
    496     private boolean visit(FuncDeclaration node, int flags, Arguments arguments, char[] name) { 
     478    private boolean visit(FuncDeclaration node, TemplateDeclaration templateDeclaration, int flags, Arguments arguments, char[] name) { 
     479        nodeStack.push(node); 
     480         
    497481        MethodInfo info = new MethodInfo(); 
    498         info.declarationStart = startOfDeclaration(node); 
     482        if (templateDeclaration != null) { 
     483            info.declarationStart = startOfDeclaration(templateDeclaration); 
     484        } else { 
     485            info.declarationStart = startOfDeclaration(node); 
     486        } 
    499487        info.modifiers = getFlags(node, node.modifiers); 
    500488        info.modifiers |= flags; 
     489        if (templateDeclaration != null) { 
     490            info.modifiers |= Flags.AccTemplate; 
     491        } 
    501492        info.name = name; 
     493        if (node.ident != null) { 
     494            info.nameSourceStart = node.ident.start; 
     495            info.nameSourceEnd = node.ident.start + node.ident.length - 1; 
     496        } 
    502497        if (arguments != null) { 
    503498            info.parameterNames = getParameterNames(arguments); 
     
    516511            info.signature = getSignature(ty); 
    517512        } 
    518         info.typeParameters = new TypeParameterInfo[0]; 
     513        if (templateDeclaration != null) { 
     514            info.typeParameters = getTypeParameters(templateDeclaration.parameters); 
     515        } else { 
     516            info.typeParameters = NO_TYPE_PARAMETERS; 
     517        } 
    519518         
    520519        requestor.enterConstructor(info); 
     
    524523    @Override 
    525524    public boolean visit(CtorDeclaration node) { 
    526         visit(node, Flags.AccConstructor, node.arguments, Id.ctor); 
     525        visit(node, null, Flags.AccConstructor, node.arguments, Id.ctor); 
    527526        pushLevelInAttribDeclarationStack(); 
    528527        return true; 
     
    531530    @Override 
    532531    public boolean visit(DtorDeclaration node) { 
    533         visit(node, Flags.AccDestructor, null, Id.dtor); 
     532        visit(node, null, Flags.AccDestructor, null, Id.dtor); 
    534533        pushLevelInAttribDeclarationStack(); 
    535534        return true; 
     
    538537    @Override 
    539538    public boolean visit(NewDeclaration node) { 
    540         visit(node, Flags.AccNew, node.arguments, Id.classNew); 
     539        visit(node, null, Flags.AccNew, node.arguments, Id.classNew); 
    541540        pushLevelInAttribDeclarationStack(); 
    542541        return true; 
     
    545544    @Override 
    546545    public boolean visit(DeleteDeclaration node) { 
    547         visit(node, Flags.AccDelete, node.arguments, Id.classDelete); 
     546        visit(node, null, Flags.AccDelete, node.arguments, Id.classDelete); 
    548547        pushLevelInAttribDeclarationStack(); 
    549548        return true; 
     
    552551    @Override 
    553552    public boolean visit(StaticCtorDeclaration node) { 
     553        nodeStack.push(node); 
    554554        requestor.enterInitializer(startOfDeclaration(node), getFlags(node, node.modifiers), CharOperation.NO_CHAR); 
    555555        pushLevelInAttribDeclarationStack(); 
     
    559559    @Override 
    560560    public boolean visit(StaticDtorDeclaration node) { 
     561        nodeStack.push(node); 
    561562        requestor.enterInitializer(startOfDeclaration(node), getFlags(node, node.modifiers) | Flags.AccStaticDestructor, CharOperation.NO_CHAR); 
    562563        pushLevelInAttribDeclarationStack(); 
     
    566567    @Override 
    567568    public boolean visit(InvariantDeclaration node) { 
     569        nodeStack.push(node); 
    568570        requestor.enterInitializer(startOfDeclaration(node), getFlags(node, node.modifiers) | Flags.AccInvariant, CharOperation.NO_CHAR); 
    569571        pushLevelInAttribDeclarationStack(); 
     
    573575    @Override 
    574576    public boolean visit(UnitTestDeclaration node) { 
     577        nodeStack.push(node); 
    575578        requestor.enterInitializer(startOfDeclaration(node), getFlags(node, node.modifiers) | Flags.AccUnitTest, CharOperation.NO_CHAR); 
    576579        pushLevelInAttribDeclarationStack(); 
     
    580583    @Override 
    581584    public boolean visit(VarDeclaration node) { 
     585        if (insideFunction()) { 
     586            return true; 
     587        } 
     588         
    582589        VarDeclaration last = node; 
    583590        while(last.next != null) { 
     
    601608        requestor.enterField(info); 
    602609         
    603         return false; 
     610        return true; 
    604611    } 
    605612     
    606613    @Override 
    607614    public boolean visit(AliasDeclaration node) { 
     615        if (insideFunction()) { 
     616            return true; 
     617        } 
     618         
    608619        AliasDeclaration last = node; 
    609620        while(last.next != null) { 
     
    632643    @Override 
    633644    public boolean visit(TypedefDeclaration node) { 
     645        if (insideFunction()) { 
     646            return true; 
     647        } 
     648         
    634649        TypedefDeclaration last = node; 
    635650        while(last.next != null) { 
     
    717732    @Override 
    718733    public boolean visit(EnumDeclaration node) { 
     734        nodeStack.push(node); 
     735         
    719736        // TODO Java -> D 
    720737        // Also, since the base class notation in D dosen't distinguis between 
     
    730747        } else { 
    731748            info.name = CharOperation.NO_CHAR; 
     749            info.nameSourceStart = node.start; 
     750            info.nameSourceEnd = node.start + 3; // enum 
    732751        } 
    733752         
     
    952971        Dsymbol dsymbol = ((DeclarationExp) node.sourceExp).declaration; // SEMANTIC 
    953972        switch(dsymbol.getNodeType()) { 
     973        case ASTDmdNode.VAR_DECLARATION: 
    954974        case ASTDmdNode.ENUM_DECLARATION: 
    955975        case ASTDmdNode.CLASS_DECLARATION: 
     
    9901010        } 
    9911011         
     1012        nodeStack.pop(); 
     1013         
    9921014        requestor.exitType(endOfDeclaration(node)); 
    9931015        popLevelInAttribDeclarationStack(); 
     
    10001022        } 
    10011023         
     1024        nodeStack.pop(); 
     1025         
    10021026        requestor.exitType(endOfDeclaration(node)); 
    10031027        popLevelInAttribDeclarationStack(); 
     
    10101034        } 
    10111035         
     1036        nodeStack.pop(); 
     1037         
    10121038        requestor.exitType(endOfDeclaration(node)); 
    10131039        popLevelInAttribDeclarationStack(); 
     
    10201046        } 
    10211047         
     1048        nodeStack.pop(); 
     1049         
    10221050        requestor.exitType(endOfDeclaration(node)); 
    10231051        popLevelInAttribDeclarationStack(); 
     
    10261054    @Override 
    10271055    public void endVisit(TemplateDeclaration node) { 
     1056        nodeStack.pop(); 
     1057         
    10281058        int end; 
    10291059        if (node.postComment != null) { 
     
    10541084        } 
    10551085         
     1086        nodeStack.pop(); 
     1087         
    10561088        requestor.exitMethod(endOfDeclaration(node), -1, -1); 
    10571089        popLevelInAttribDeclarationStack(); 
     
    10601092    @Override 
    10611093    public void endVisit(CtorDeclaration node) { 
     1094        nodeStack.pop(); 
     1095         
    10621096        requestor.exitConstructor(endOfDeclaration(node)); 
    10631097        popLevelInAttribDeclarationStack(); 
     
    10661100    @Override 
    10671101    public void endVisit(DtorDeclaration node) { 
     1102        nodeStack.pop(); 
     1103         
    10681104        requestor.exitConstructor(endOfDeclaration(node)); 
    10691105        popLevelInAttribDeclarationStack(); 
     
    10721108    @Override 
    10731109    public void endVisit(NewDeclaration node) { 
     1110        nodeStack.pop(); 
     1111         
    10741112        requestor.exitConstructor(endOfDeclaration(node)); 
    10751113        popLevelInAttribDeclarationStack(); 
     
    10781116    @Override 
    10791117    public void endVisit(DeleteDeclaration node) { 
     1118        nodeStack.pop(); 
     1119         
    10801120        requestor.exitConstructor(endOfDeclaration(node)); 
    10811121        popLevelInAttribDeclarationStack(); 
     
    10841124    @Override 
    10851125    public void endVisit(StaticCtorDeclaration node) { 
     1126        nodeStack.pop(); 
     1127         
    10861128        requestor.exitInitializer(endOfDeclaration(node)); 
    10871129        popLevelInAttribDeclarationStack(); 
     
    10901132    @Override 
    10911133    public void endVisit(StaticDtorDeclaration node) { 
     1134        nodeStack.pop(); 
     1135         
    10921136        requestor.exitInitializer(endOfDeclaration(node)); 
    10931137        popLevelInAttribDeclarationStack(); 
     
    10961140    @Override 
    10971141    public void endVisit(InvariantDeclaration node) { 
     1142        nodeStack.pop(); 
     1143         
    10981144        requestor.exitInitializer(endOfDeclaration(node)); 
    10991145        popLevelInAttribDeclarationStack(); 
     
    11021148    @Override 
    11031149    public void endVisit(UnitTestDeclaration node) { 
     1150        nodeStack.pop(); 
     1151         
    11041152        requestor.exitInitializer(endOfDeclaration(node)); 
    11051153        popLevelInAttribDeclarationStack(); 
     
    11081156    @Override 
    11091157    public void endVisit(VarDeclaration node) { 
     1158        if (insideFunction()) { 
     1159            return; 
     1160        } 
     1161         
    11101162        VarDeclaration last = node; 
    11111163        while(last.next != null) { 
     
    11221174    @Override 
    11231175    public void endVisit(AliasDeclaration node) { 
     1176        if (insideFunction()) { 
     1177            return; 
     1178        } 
     1179         
    11241180        AliasDeclaration last = node; 
    11251181        while(last.next != null) { 
     
    11361192    @Override 
    11371193    public void endVisit(TypedefDeclaration node) { 
     1194        if (insideFunction()) { 
     1195            return; 
     1196        } 
     1197         
    11381198        TypedefDeclaration last = node; 
    11391199        while(last.next != null) { 
     
    11831243    @Override 
    11841244    public void endVisit(EnumDeclaration node) { 
     1245        nodeStack.pop(); 
     1246         
    11851247        requestor.exitType(endOfDeclaration(node)); 
    11861248        popLevelInAttribDeclarationStack(); 
     
    12171279    @Override 
    12181280    public void endVisit(AnonDeclaration node) { 
     1281        nodeStack.pop(); 
     1282         
    12191283        requestor.exitType(endOfDeclaration(node)); 
    12201284        popLevelInAttribDeclarationStack(); 
     
    12521316 
    12531317    @Override 
    1254     public boolean visit(ASTNode node) { 
    1255         return false; 
    1256     } 
    1257  
    1258     @Override 
    1259     public boolean visit(ASTDmdNode node) { 
    1260         return false; 
    1261     } 
    1262  
    1263     @Override 
    1264     public boolean visit(AddAssignExp node) { 
    1265         return false; 
    1266     } 
    1267  
    1268     @Override 
    1269     public boolean visit(AddExp node) { 
    1270         return false; 
    1271     } 
    1272  
    1273     @Override 
    1274     public boolean visit(AddrExp node) { 
    1275         return false; 
    1276     } 
    1277  
    1278     @Override 
    1279     public boolean visit(AggregateDeclaration node) { 
    1280         return false; 
    1281     } 
    1282  
    1283     @Override 
    1284     public boolean visit(AndAndExp node) { 
    1285         return false; 
    1286     } 
    1287  
    1288     @Override 
    1289     public boolean visit(AndAssignExp node) { 
    1290         return false; 
    1291     } 
    1292  
    1293     @Override 
    1294     public boolean visit(AndExp node) { 
    1295         return false; 
    1296     } 
    1297  
    1298     @Override 
    12991318    public boolean visit(AnonDeclaration node) { 
     1319        nodeStack.push(node); 
     1320         
    13001321        TypeInfo info = new TypeInfo(); 
    13011322        info.declarationStart = startOfDeclaration(node); 
     
    13131334        return true; 
    13141335    } 
    1315  
    1316     @Override 
    1317     public boolean visit(AnonymousAggregateDeclaration node) { 
    1318         return false; 
    1319     } 
    1320  
    1321     @Override 
    1322     public boolean visit(Argument node) { 
    1323         return false; 
    1324     } 
    1325  
    1326     @Override 
    1327     public boolean visit(ArrayExp node) { 
    1328         return false; 
    1329     } 
    1330  
    1331     @Override 
    1332     public boolean visit(ArrayInitializer node) { 
    1333         return false; 
    1334     } 
    1335      
    1336     @Override 
    1337     public boolean visit(ArrayLengthExp node) { 
    1338         return false; 
    1339     } 
    1340  
    1341     @Override 
    1342     public boolean visit(ArrayLiteralExp node) { 
    1343         return false; 
    1344     } 
    1345  
    1346     @Override 
    1347     public boolean visit(ArrayScopeSymbol node) { 
    1348         return false; 
    1349     } 
    1350  
    1351     @Override 
    1352     public boolean visit(AsmBlock node) { 
    1353         return false; 
    1354     } 
    1355  
    1356     @Override 
    1357     public boolean visit(AsmStatement node) { 
    1358         return false; 
    1359     } 
    1360  
    1361     @Override 
    1362     public boolean visit(AssertExp node) { 
    1363         return false; 
    1364     } 
    1365  
    1366     @Override 
    1367     public boolean visit(AssignExp node) { 
    1368         return false; 
    1369     } 
    1370  
    1371     @Override 
    1372     public boolean visit(AssocArrayLiteralExp node) { 
    1373         return false; 
    1374     } 
    1375  
    1376     @Override 
    1377     public boolean visit(AttribDeclaration node) { 
    1378         return false; 
    1379     } 
    1380  
    1381     @Override 
    1382     public boolean visit(BaseClass node) { 
    1383         return false; 
    1384     } 
    1385  
    1386     @Override 
    1387     public boolean visit(BinExp node) { 
    1388         return false; 
    1389     } 
    1390  
    1391     @Override 
    1392     public boolean visit(BoolExp node) { 
    1393         return false; 
    1394     } 
    1395  
    1396     @Override 
    1397     public boolean visit(BreakStatement node) { 
    1398         return false; 
    1399     } 
    1400  
    1401     @Override 
    1402     public boolean visit(CallExp node) { 
    1403         return false; 
    1404     } 
    1405  
    1406     @Override 
    1407     public boolean visit(CaseStatement node) { 
    1408         return true; 
    1409     } 
    1410  
    1411     @Override 
    1412     public boolean visit(CastExp node) { 
    1413         return false; 
    1414     } 
    1415  
    1416     @Override 
    1417     public boolean visit(CatAssignExp node) { 
    1418         return false; 
    1419     } 
    1420  
    1421     @Override 
    1422     public boolean visit(Catch node) { 
    1423         return true; 
    1424     } 
    1425  
    1426     @Override 
    1427     public boolean visit(CatExp node) { 
    1428         return false; 
    1429     } 
    1430  
    1431     @Override 
    1432     public boolean visit(ClassInfoDeclaration node) { 
    1433         return false; 
    1434     } 
    1435  
    1436     @Override 
    1437     public boolean visit(CmpExp node) { 
    1438         return false; 
    1439     } 
    1440  
    1441     @Override 
    1442     public boolean visit(ComExp node) { 
    1443         return false; 
    1444     } 
    1445  
    1446     @Override 
    1447     public boolean visit(CommaExp node) { 
    1448         return false; 
    1449     } 
    1450  
    1451     @Override 
    1452     public boolean visit(CompileExp node) { 
    1453         return false; 
    1454     } 
    1455  
    1456     @Override 
    1457     public boolean visit(CompileStatement node) { 
    1458         return false; 
    1459     } 
    1460  
    1461     @Override 
    1462     public boolean visit(ComplexExp node) { 
    1463         return false; 
    1464     } 
    1465  
    1466     @Override 
    1467     public boolean visit(CompoundStatement node) { 
    1468         return true; 
    1469     } 
    1470  
    1471     @Override 
    1472     public boolean visit(CondExp node) { 
    1473         return false; 
    1474     } 
    1475  
    1476     @Override 
    1477     public boolean visit(Condition node) { 
    1478         return false; 
    1479     } 
    1480  
    1481     @Override 
    1482     public boolean visit(ConditionalStatement node) { 
    1483         return true; 
    1484     } 
    1485  
    1486     @Override 
    1487     public boolean visit(ContinueStatement node) { 
    1488         return false; 
    1489     } 
    1490  
    1491     @Override 
    1492     public boolean visit(DebugCondition node) { 
    1493         return false; 
    1494     } 
    1495  
    1496     @Override 
    1497     public boolean visit(Declaration node) { 
    1498         return false; 
    1499     } 
    1500  
    1501     @Override 
    1502     public boolean visit(DeclarationExp node) { 
    1503         return false; 
    1504     } 
    1505  
    1506     @Override 
    1507     public boolean visit(DefaultStatement node) { 
    1508         return true; 
    1509     } 
    1510  
    1511     @Override 
    1512     public boolean visit(DelegateExp node) { 
    1513         return false; 
    1514     } 
    1515  
    1516     @Override 
    1517     public boolean visit(DeleteExp node) { 
    1518         return false; 
    1519     } 
    1520  
    1521     @Override 
    1522     public boolean visit(DivAssignExp node) { 
    1523         return false; 
    1524     } 
    1525  
    1526     @Override 
    1527     public boolean visit(DivExp node) { 
    1528         return false; 
    1529     } 
    1530  
    1531     @Override 
    1532     public boolean visit(DollarExp node) { 
    1533         return false; 
    1534     } 
    1535  
    1536     @Override 
    1537     public boolean visit(DoStatement node) { 
    1538         return true; 
    1539     } 
    1540  
    1541     @Override 
    1542     public boolean visit(DotExp node) { 
    1543         return false; 
    1544     } 
    1545  
    1546     @Override 
    1547     public boolean visit(DotIdExp node) { 
    1548         return false; 
    1549     } 
    1550  
    1551     @Override 
    1552     public boolean visit(DotTemplateExp node) { 
    1553         return false; 
    1554     } 
    1555  
    1556     @Override 
    1557     public boolean visit(DotTemplateInstanceExp node) { 
    1558         return false; 
    1559     } 
    1560  
    1561     @Override 
    1562     public boolean visit(DotTypeExp node) { 
    1563         return false; 
    1564     } 
    1565  
    1566     @Override 
    1567     public boolean visit(DotVarExp node) { 
    1568         return false; 
    1569     } 
    1570  
    1571     @Override 
    1572     public boolean visit(Dsymbol node) { 
    1573         return false; 
    1574     } 
    1575  
    1576     @Override 
    1577     public boolean visit(DsymbolExp node) { 
    1578         return false; 
    1579     } 
    1580  
    1581     @Override 
    1582     public boolean visit(EqualExp node) { 
    1583         return false; 
    1584     } 
    1585  
    1586     @Override 
    1587     public boolean visit(ExpInitializer node) { 
    1588         return false; 
    1589     } 
    1590  
    1591     @Override 
    1592     public boolean visit(Expression node) { 
    1593         return false; 
    1594     } 
    1595  
    1596     @Override 
    1597     public boolean visit(ExpStatement node) { 
    1598         return false; 
    1599     } 
    1600  
    1601     @Override 
    1602     public boolean visit(FileExp node) { 
    1603         return false; 
    1604     } 
    1605  
    1606     @Override 
    1607     public boolean visit(ForeachRangeStatement node) { 
    1608         return true; 
    1609     } 
    1610  
    1611     @Override 
    1612     public boolean visit(ForeachStatement node) { 
    1613         return true; 
    1614     } 
    1615  
    1616     @Override 
    1617     public boolean visit(ForStatement node) { 
    1618         return true; 
    1619     } 
    1620  
    1621     @Override 
    1622     public boolean visit(FuncAliasDeclaration node) { 
    1623         return false; 
    1624     } 
    1625  
    1626     @Override 
    1627     public boolean visit(FuncExp node) { 
    1628         return false; 
    1629     } 
    1630  
    1631     @Override 
    1632     public boolean visit(FuncLiteralDeclaration node) { 
    1633         return false; 
    1634     } 
    1635  
    1636     @Override 
    1637     public boolean visit(GotoCaseStatement node) { 
    1638         return false; 
    1639     } 
    1640  
    1641     @Override 
    1642     public boolean visit(GotoDefaultStatement node) { 
    1643         return false; 
    1644     } 
    1645  
    1646     @Override 
    1647     public boolean visit(GotoStatement node) { 
    1648         return false; 
    1649     } 
    1650  
    1651     @Override 
    1652     public boolean visit(HaltExp node) { 
    1653         return false; 
    1654     } 
    1655  
    1656     @Override 
    1657     public boolean visit(IdentifierExp node) { 
    1658         return false; 
    1659     } 
    1660  
    1661     @Override 
    1662     public boolean visit(IdentityExp node) { 
    1663         return false; 
    1664     } 
    1665  
    1666     @Override 
    1667     public boolean visit(IfStatement node) { 
    1668         return true; 
    1669     } 
    1670  
    1671     @Override 
    1672     public boolean visit(IftypeCondition node) { 
    1673         return false; 
    1674     } 
    1675  
    1676     @Override 
    1677     public boolean visit(IsExp node) { 
    1678         return false; 
    1679     } 
    1680  
    1681     @Override 
    1682     public boolean visit(IndexExp node) { 
    1683         return false; 
    1684     } 
    1685  
    1686     @Override 
    1687     public boolean visit(InExp node) { 
    1688         return false; 
    1689     } 
    1690  
    1691     @Override 
    1692     public boolean visit(Initializer node) { 
    1693         return false; 
    1694     } 
    1695  
    1696     @Override 
    1697     public boolean visit(IntegerExp node) { 
    1698         return false; 
    1699     }    
    1700  
    1701     @Override 
    1702     public boolean visit(LabelDsymbol node) { 
    1703         return false; 
    1704     } 
    1705  
    1706     @Override 
    1707     public boolean visit(LabelStatement node) { 
    1708         return true; 
    1709     } 
    1710  
    1711     @Override 
    1712     public boolean visit(MinAssignExp node) { 
    1713         return false; 
    1714     } 
    1715  
    1716     @Override 
    1717     public boolean visit(MinExp node) { 
    1718         return false; 
    1719     } 
    1720  
    1721     @Override 
    1722     public boolean visit(ModAssignExp node) { 
    1723         return false; 
    1724     } 
    1725  
    1726     @Override 
    1727     public boolean visit(ModExp node) { 
    1728         return false; 
    1729     } 
    1730  
    1731     @Override 
    1732     public boolean visit(Modifier node) { 
    1733         return false; 
    1734     } 
    1735  
    1736     @Override 
    1737     public boolean visit(ModuleInfoDeclaration node) { 
    1738         return false; 
    1739     } 
    1740  
    1741     @Override 
    1742     public boolean visit(MulAssignExp node) { 
    1743         return false; 
    1744     } 
    1745  
    1746     @Override 
    1747     public boolean visit(MulExp node) { 
    1748         return false; 
    1749     } 
    1750  
    1751     @Override 
    1752     public boolean visit(NegExp node) { 
    1753         return false; 
    1754     } 
    1755  
    1756     @Override 
    1757     public boolean visit(NewAnonClassExp node) { 
    1758         return false; 
    1759     }    
    1760  
    1761     @Override 
    1762     public boolean visit(NewExp node) { 
    1763         return false; 
    1764     } 
    1765  
    1766     @Override 
    1767     public boolean visit(NotExp node) { 
    1768         return false; 
    1769     } 
    1770  
    1771     @Override 
    1772     public boolean visit(NullExp node) { 
    1773         return false; 
    1774     } 
    1775  
    1776     @Override 
    1777     public boolean visit(OnScopeStatement node) { 
    1778         return true; 
    1779     } 
    1780  
    1781     @Override 
    1782     public boolean visit(OrAssignExp node) { 
    1783         return false; 
    1784     } 
    1785  
    1786     @Override 
    1787     public boolean visit(OrExp node) { 
    1788         return false; 
    1789     } 
    1790  
    1791     @Override 
    1792     public boolean visit(OrOrExp node) { 
    1793         return false; 
    1794     } 
    1795  
    1796     @Override 
    1797     public boolean visit(Package node) { 
    1798         return false; 
    1799     } 
    1800  
    1801     @Override 
    1802     public boolean visit(PostExp node) { 
    1803         return false; 
    1804     }    
    1805  
    1806     @Override 
    1807     public boolean visit(PragmaStatement node) { 
    1808         return true; 
    1809     } 
    1810  
    1811     @Override 
    1812     public boolean visit(PtrExp node) { 
    1813         return false; 
    1814     } 
    1815  
    1816     @Override 
    1817     public boolean visit(RealExp node) { 
    1818         return false; 
    1819     } 
    1820  
    1821     @Override 
    1822     public boolean visit(RemoveExp node) { 
    1823         return false; 
    1824     } 
    1825  
    1826     @Override 
    1827     public boolean visit(ReturnStatement node) { 
    1828         return true; 
    1829     } 
    1830  
    1831     @Override 
    1832     public boolean visit(ScopeDsymbol node) { 
    1833         return false; 
    1834     } 
    1835  
    1836     @Override 
    1837     public boolean visit(ScopeExp node) { 
    1838         return false; 
    1839     } 
    1840  
    1841     @Override 
    1842     public boolean visit(ScopeStatement node) { 
    1843         return true; 
    1844     } 
    1845  
    1846     @Override 
    1847     public boolean visit(ShlAssignExp node) { 
    1848         return false; 
    1849     } 
    1850  
    1851     @Override 
    1852     public boolean visit(ShlExp node) { 
    1853         return false; 
    1854     } 
    1855  
    1856     @Override 
    1857     public boolean visit(ShrAssignExp node) { 
    1858         return false; 
    1859     } 
    1860  
    1861     @Override 
    1862     public boolean visit(ShrExp node) { 
    1863         return false; 
    1864     } 
    1865  
    1866     @Override 
    1867     public boolean visit(SliceExp node) { 
    1868         return false; 
    1869     } 
    1870  
    1871     @Override 
    1872     public boolean visit(Statement node) { 
    1873         return false; 
    1874     } 
    1875  
    1876     @Override 
    1877     public boolean visit(StaticAssertStatement node) { 
    1878         return false; 
    1879     } 
    1880  
    1881     @Override 
    1882     public boolean visit(StaticIfCondition node) { 
    1883         return false; 
    1884     } 
    1885  
    1886     @Override 
    1887     public boolean visit(StaticIfDeclaration node) { 
    1888         return false; 
    1889     } 
    1890  
    1891     @Override 
    1892     public boolean visit(StringExp node) { 
    1893         return false; 
    1894     } 
    1895  
    1896     @Override 
    1897     public boolean visit(StructInitializer node) { 
    1898         return false; 
    1899     } 
    1900  
    1901     @Override 
    1902     public boolean visit(SuperExp node) { 
    1903         return false; 
    1904     } 
    1905  
    1906     @Override 
    1907     public boolean visit(SwitchStatement node) { 
    1908         return true; 
    1909     } 
    1910  
    1911     @Override 
    1912     public boolean visit(SymOffExp node) { 
    1913         return false; 
    1914     } 
    1915  
    1916     @Override 
    1917     public boolean visit(SynchronizedStatement node) { 
    1918&