Changes in src/AST/Pass.impl.hpp [e21f253:6b2d444]
- File:
-
- 1 edited
-
src/AST/Pass.impl.hpp (modified) (120 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Pass.impl.hpp
re21f253 r6b2d444 33 33 /* call the implementation of the previsit of this pass */ \ 34 34 __pass::previsit( core, node, 0 ); 35 36 #define VISIT( code... ) \ 37 /* if this node should visit its children */ \ 38 if ( __visit_children() ) { \ 39 /* visit the children */ \ 40 code \ 41 } 35 42 36 43 #define VISIT_END( type, node ) \ … … 445 452 VISIT_START( node ); 446 453 447 if ( __visit_children() ) {454 VISIT( 448 455 { 449 456 guard_symtab guard { *this }; … … 453 460 maybe_accept( node, &ObjectDecl::bitfieldWidth ); 454 461 maybe_accept( node, &ObjectDecl::attributes ); 455 }462 ) 456 463 457 464 __pass::symtab::addId( core, 0, node ); … … 468 475 __pass::symtab::addId( core, 0, node ); 469 476 470 if ( __visit_children() ) { 471 maybe_accept( node, &FunctionDecl::withExprs ); 472 } 477 VISIT(maybe_accept( node, &FunctionDecl::withExprs );) 473 478 { 474 479 // with clause introduces a level of scope (for the with expression members). … … 488 493 } }; 489 494 __pass::symtab::addId( core, 0, func ); 490 if ( __visit_children() ) {495 VISIT( 491 496 // parameter declarations 492 497 maybe_accept( node, &FunctionDecl::params ); … … 504 509 maybe_accept( node, &FunctionDecl::stmts ); 505 510 maybe_accept( node, &FunctionDecl::attributes ); 506 }511 ) 507 512 } 508 513 } … … 521 526 __pass::symtab::addStructFwd( core, 0, node ); 522 527 523 if ( __visit_children() ){528 VISIT({ 524 529 guard_symtab guard { * this }; 525 530 maybe_accept( node, &StructDecl::params ); 526 531 maybe_accept( node, &StructDecl::members ); 527 532 maybe_accept( node, &StructDecl::attributes ); 528 } 533 }) 529 534 530 535 // this addition replaces the forward declaration … … 543 548 __pass::symtab::addUnionFwd( core, 0, node ); 544 549 545 if ( __visit_children() ){550 VISIT({ 546 551 guard_symtab guard { * this }; 547 552 maybe_accept( node, &UnionDecl::params ); 548 553 maybe_accept( node, &UnionDecl::members ); 549 554 maybe_accept( node, &UnionDecl::attributes ); 550 } 555 }) 551 556 552 557 __pass::symtab::addUnion( core, 0, node ); … … 563 568 __pass::symtab::addEnum( core, 0, node ); 564 569 565 if ( __visit_children() ) {570 VISIT( 566 571 // unlike structs, traits, and unions, enums inject their members into the global scope 567 572 maybe_accept( node, &EnumDecl::params ); 568 573 maybe_accept( node, &EnumDecl::members ); 569 574 maybe_accept( node, &EnumDecl::attributes ); 570 }575 ) 571 576 572 577 VISIT_END( Decl, node ); … … 579 584 VISIT_START( node ); 580 585 581 if ( __visit_children() ){586 VISIT({ 582 587 guard_symtab guard { *this }; 583 588 maybe_accept( node, &TraitDecl::params ); 584 589 maybe_accept( node, &TraitDecl::members ); 585 590 maybe_accept( node, &TraitDecl::attributes ); 586 } 591 }) 587 592 588 593 __pass::symtab::addTrait( core, 0, node ); … … 597 602 VISIT_START( node ); 598 603 599 if ( __visit_children() ){604 VISIT({ 600 605 guard_symtab guard { *this }; 601 606 maybe_accept( node, &TypeDecl::base ); 602 } 607 }) 603 608 604 609 // see A NOTE ON THE ORDER OF TRAVERSAL, above … … 607 612 __pass::symtab::addType( core, 0, node ); 608 613 609 if ( __visit_children() ) {614 VISIT( 610 615 maybe_accept( node, &TypeDecl::assertions ); 611 616 … … 614 619 maybe_accept( node, &TypeDecl::init ); 615 620 } 616 }621 ) 617 622 618 623 VISIT_END( Decl, node ); … … 625 630 VISIT_START( node ); 626 631 627 if ( __visit_children() ){632 VISIT({ 628 633 guard_symtab guard { *this }; 629 634 maybe_accept( node, &TypedefDecl::base ); 630 } 635 }) 631 636 632 637 __pass::symtab::addType( core, 0, node ); 633 638 634 if ( __visit_children() ) { 635 maybe_accept( node, &TypedefDecl::assertions ); 636 } 639 VISIT( maybe_accept( node, &TypedefDecl::assertions ); ) 637 640 638 641 VISIT_END( Decl, node ); … … 645 648 VISIT_START( node ); 646 649 647 if ( __visit_children() ) {650 VISIT( 648 651 maybe_accept( node, &AsmDecl::stmt ); 649 }652 ) 650 653 651 654 VISIT_END( AsmDecl, node ); … … 658 661 VISIT_START( node ); 659 662 660 if ( __visit_children() ) {663 VISIT( 661 664 maybe_accept( node, &DirectiveDecl::stmt ); 662 }665 ) 663 666 664 667 VISIT_END( DirectiveDecl, node ); … … 671 674 VISIT_START( node ); 672 675 673 if ( __visit_children() ) {676 VISIT( 674 677 maybe_accept( node, &StaticAssertDecl::cond ); 675 678 maybe_accept( node, &StaticAssertDecl::msg ); 676 }679 ) 677 680 678 681 VISIT_END( StaticAssertDecl, node ); … … 684 687 const ast::CompoundStmt * ast::Pass< core_t >::visit( const ast::CompoundStmt * node ) { 685 688 VISIT_START( node ); 686 687 if ( __visit_children() ) { 689 VISIT( 688 690 // Do not enter (or leave) a new scope if atFunctionTop. Remember to save the result. 689 691 auto guard1 = makeFuncGuard( [this, enterScope = !this->atFunctionTop]() { … … 702 704 guard_scope guard3 { *this }; 703 705 maybe_accept( node, &CompoundStmt::kids ); 704 } 705 706 ) 706 707 VISIT_END( CompoundStmt, node ); 707 708 } … … 713 714 VISIT_START( node ); 714 715 715 if ( __visit_children() ) {716 VISIT( 716 717 maybe_accept( node, &ExprStmt::expr ); 717 }718 ) 718 719 719 720 VISIT_END( Stmt, node ); … … 726 727 VISIT_START( node ) 727 728 728 if ( __visit_children() ) {729 VISIT( 729 730 maybe_accept( node, &AsmStmt::instruction ); 730 731 maybe_accept( node, &AsmStmt::output ); 731 732 maybe_accept( node, &AsmStmt::input ); 732 733 maybe_accept( node, &AsmStmt::clobber ); 733 }734 ) 734 735 735 736 VISIT_END( Stmt, node ); … … 751 752 VISIT_START( node ); 752 753 753 if ( __visit_children() ){754 VISIT({ 754 755 // if statements introduce a level of scope (for the initialization) 755 756 guard_symtab guard { *this }; … … 758 759 maybe_accept_as_compound( node, &IfStmt::thenPart ); 759 760 maybe_accept_as_compound( node, &IfStmt::elsePart ); 760 } 761 }) 761 762 762 763 VISIT_END( Stmt, node ); … … 769 770 VISIT_START( node ); 770 771 771 if ( __visit_children() ){772 VISIT({ 772 773 // while statements introduce a level of scope (for the initialization) 773 774 guard_symtab guard { *this }; … … 775 776 maybe_accept( node, &WhileStmt::cond ); 776 777 maybe_accept_as_compound( node, &WhileStmt::body ); 777 } 778 }) 778 779 779 780 VISIT_END( Stmt, node ); … … 786 787 VISIT_START( node ); 787 788 788 if ( __visit_children() ){789 VISIT({ 789 790 // for statements introduce a level of scope (for the initialization) 790 791 guard_symtab guard { *this }; … … 794 795 maybe_accept( node, &ForStmt::inc ); 795 796 maybe_accept_as_compound( node, &ForStmt::body ); 796 } 797 }) 797 798 798 799 VISIT_END( Stmt, node ); … … 805 806 VISIT_START( node ); 806 807 807 if ( __visit_children() ) {808 VISIT( 808 809 maybe_accept( node, &SwitchStmt::cond ); 809 810 maybe_accept( node, &SwitchStmt::stmts ); 810 }811 ) 811 812 812 813 VISIT_END( Stmt, node ); … … 819 820 VISIT_START( node ); 820 821 821 if ( __visit_children() ) {822 VISIT( 822 823 maybe_accept( node, &CaseStmt::cond ); 823 824 maybe_accept( node, &CaseStmt::stmts ); 824 }825 ) 825 826 826 827 VISIT_END( Stmt, node ); … … 841 842 VISIT_START( node ); 842 843 843 if ( __visit_children() ) {844 VISIT( 844 845 maybe_accept( node, &ReturnStmt::expr ); 845 }846 ) 846 847 847 848 VISIT_END( Stmt, node ); … … 854 855 VISIT_START( node ); 855 856 856 if ( __visit_children() ) {857 VISIT( 857 858 maybe_accept( node, &ThrowStmt::expr ); 858 859 maybe_accept( node, &ThrowStmt::target ); 859 }860 ) 860 861 861 862 VISIT_END( Stmt, node ); … … 868 869 VISIT_START( node ); 869 870 870 if ( __visit_children() ) {871 VISIT( 871 872 maybe_accept( node, &TryStmt::body ); 872 873 maybe_accept( node, &TryStmt::handlers ); 873 874 maybe_accept( node, &TryStmt::finally ); 874 }875 ) 875 876 876 877 VISIT_END( Stmt, node ); … … 883 884 VISIT_START( node ); 884 885 885 if ( __visit_children() ){886 VISIT({ 886 887 // catch statements introduce a level of scope (for the caught exception) 887 888 guard_symtab guard { *this }; … … 889 890 maybe_accept( node, &CatchStmt::cond ); 890 891 maybe_accept_as_compound( node, &CatchStmt::body ); 891 } 892 }) 892 893 893 894 VISIT_END( Stmt, node ); … … 900 901 VISIT_START( node ); 901 902 902 if ( __visit_children() ) {903 VISIT( 903 904 maybe_accept( node, &FinallyStmt::body ); 904 }905 ) 905 906 906 907 VISIT_END( Stmt, node ); … … 913 914 VISIT_START( node ); 914 915 915 if ( __visit_children() ) {916 VISIT( 916 917 maybe_accept( node, &SuspendStmt::then ); 917 }918 ) 918 919 919 920 VISIT_END( Stmt, node ); … … 933 934 // } 934 935 935 if ( __visit_children() ){936 VISIT({ 936 937 std::vector<WaitForStmt::Clause> new_clauses; 937 938 new_clauses.reserve( node->clauses.size() ); … … 964 965 node = n; 965 966 } 966 } 967 }) 967 968 968 969 #define maybe_accept(field) \ … … 976 977 } 977 978 978 if ( __visit_children() ) {979 VISIT( 979 980 maybe_accept( timeout.time ); 980 981 maybe_accept( timeout.stmt ); … … 982 983 maybe_accept( orElse.stmt ); 983 984 maybe_accept( orElse.cond ); 984 }985 ) 985 986 986 987 #undef maybe_accept … … 995 996 VISIT_START( node ); 996 997 997 if ( __visit_children() ) {998 VISIT( 998 999 maybe_accept( node, &WithStmt::exprs ); 999 1000 { … … 1003 1004 maybe_accept( node, &WithStmt::stmt ); 1004 1005 } 1005 } 1006 1006 ) 1007 1007 VISIT_END( Stmt, node ); 1008 1008 } … … 1022 1022 VISIT_START( node ); 1023 1023 1024 if ( __visit_children() ) {1024 VISIT( 1025 1025 maybe_accept( node, &DeclStmt::decl ); 1026 }1026 ) 1027 1027 1028 1028 VISIT_END( Stmt, node ); … … 1037 1037 // For now this isn't visited, it is unclear if this causes problem 1038 1038 // if all tests are known to pass, remove this code 1039 if ( __visit_children() ) {1039 VISIT( 1040 1040 maybe_accept( node, &ImplicitCtorDtorStmt::callStmt ); 1041 }1041 ) 1042 1042 1043 1043 VISIT_END( Stmt, node ); … … 1050 1050 VISIT_START( node ); 1051 1051 1052 if ( __visit_children() ) { 1053 // mutex statements introduce a level of scope (for the initialization) 1054 guard_symtab guard { *this }; 1055 maybe_accept( node, &MutexStmt::stmt ); 1052 VISIT( 1056 1053 maybe_accept( node, &MutexStmt::mutexObjs ); 1057 } 1054 { 1055 // mutex statements introduce a level of scope (for the initialization) 1056 guard_symtab guard { *this }; 1057 maybe_accept( node, &MutexStmt::stmt ); 1058 1059 } 1060 ) 1058 1061 1059 1062 VISIT_END( Stmt, node ); … … 1066 1069 VISIT_START( node ); 1067 1070 1068 if ( __visit_children() ) {1071 VISIT( 1069 1072 { 1070 1073 guard_symtab guard { *this }; … … 1073 1076 maybe_accept( node, &ApplicationExpr::func ); 1074 1077 maybe_accept( node, &ApplicationExpr::args ); 1075 }1078 ) 1076 1079 1077 1080 VISIT_END( Expr, node ); … … 1084 1087 VISIT_START( node ); 1085 1088 1086 if ( __visit_children() ) {1089 VISIT( 1087 1090 { 1088 1091 guard_symtab guard { *this }; … … 1091 1094 1092 1095 maybe_accept( node, &UntypedExpr::args ); 1093 }1096 ) 1094 1097 1095 1098 VISIT_END( Expr, node ); … … 1102 1105 VISIT_START( node ); 1103 1106 1104 if ( __visit_children() ){1107 VISIT({ 1105 1108 guard_symtab guard { *this }; 1106 1109 maybe_accept( node, &NameExpr::result ); 1107 } 1110 }) 1108 1111 1109 1112 VISIT_END( Expr, node ); … … 1116 1119 VISIT_START( node ); 1117 1120 1118 if ( __visit_children() ) { 1119 { 1121 VISIT({ 1120 1122 guard_symtab guard { *this }; 1121 1123 maybe_accept( node, &CastExpr::result ); 1122 1124 } 1123 1125 maybe_accept( node, &CastExpr::arg ); 1124 }1126 ) 1125 1127 1126 1128 VISIT_END( Expr, node ); … … 1133 1135 VISIT_START( node ); 1134 1136 1135 if ( __visit_children() ) { 1136 { 1137 VISIT({ 1137 1138 guard_symtab guard { *this }; 1138 1139 maybe_accept( node, &KeywordCastExpr::result ); 1139 1140 } 1140 1141 maybe_accept( node, &KeywordCastExpr::arg ); 1141 }1142 ) 1142 1143 1143 1144 VISIT_END( Expr, node ); … … 1150 1151 VISIT_START( node ); 1151 1152 1152 if ( __visit_children() ) { 1153 { 1153 VISIT({ 1154 1154 guard_symtab guard { *this }; 1155 1155 maybe_accept( node, &VirtualCastExpr::result ); 1156 1156 } 1157 1157 maybe_accept( node, &VirtualCastExpr::arg ); 1158 }1158 ) 1159 1159 1160 1160 VISIT_END( Expr, node ); … … 1167 1167 VISIT_START( node ); 1168 1168 1169 if ( __visit_children() ) { 1170 { 1169 VISIT({ 1171 1170 guard_symtab guard { *this }; 1172 1171 maybe_accept( node, &AddressExpr::result ); 1173 1172 } 1174 1173 maybe_accept( node, &AddressExpr::arg ); 1175 }1174 ) 1176 1175 1177 1176 VISIT_END( Expr, node ); … … 1184 1183 VISIT_START( node ); 1185 1184 1186 if ( __visit_children() ){1185 VISIT({ 1187 1186 guard_symtab guard { *this }; 1188 1187 maybe_accept( node, &LabelAddressExpr::result ); 1189 } 1188 }) 1190 1189 1191 1190 VISIT_END( Expr, node ); … … 1198 1197 VISIT_START( node ); 1199 1198 1200 if ( __visit_children() ) { 1201 { 1199 VISIT({ 1202 1200 guard_symtab guard { *this }; 1203 1201 maybe_accept( node, &UntypedMemberExpr::result ); … … 1205 1203 maybe_accept( node, &UntypedMemberExpr::aggregate ); 1206 1204 maybe_accept( node, &UntypedMemberExpr::member ); 1207 }1205 ) 1208 1206 1209 1207 VISIT_END( Expr, node ); … … 1216 1214 VISIT_START( node ); 1217 1215 1218 if ( __visit_children() ) { 1219 { 1216 VISIT({ 1220 1217 guard_symtab guard { *this }; 1221 1218 maybe_accept( node, &MemberExpr::result ); 1222 1219 } 1223 1220 maybe_accept( node, &MemberExpr::aggregate ); 1224 }1221 ) 1225 1222 1226 1223 VISIT_END( Expr, node ); … … 1233 1230 VISIT_START( node ); 1234 1231 1235 if ( __visit_children() ){1232 VISIT({ 1236 1233 guard_symtab guard { *this }; 1237 1234 maybe_accept( node, &VariableExpr::result ); 1238 } 1235 }) 1239 1236 1240 1237 VISIT_END( Expr, node ); … … 1247 1244 VISIT_START( node ); 1248 1245 1249 if ( __visit_children() ){1246 VISIT({ 1250 1247 guard_symtab guard { *this }; 1251 1248 maybe_accept( node, &ConstantExpr::result ); 1252 } 1249 }) 1253 1250 1254 1251 VISIT_END( Expr, node ); … … 1261 1258 VISIT_START( node ); 1262 1259 1263 if ( __visit_children() ) { 1264 { 1260 VISIT({ 1265 1261 guard_symtab guard { *this }; 1266 1262 maybe_accept( node, &SizeofExpr::result ); … … 1271 1267 maybe_accept( node, &SizeofExpr::expr ); 1272 1268 } 1273 }1269 ) 1274 1270 1275 1271 VISIT_END( Expr, node ); … … 1282 1278 VISIT_START( node ); 1283 1279 1284 if ( __visit_children() ) { 1285 { 1280 VISIT({ 1286 1281 guard_symtab guard { *this }; 1287 1282 maybe_accept( node, &AlignofExpr::result ); … … 1292 1287 maybe_accept( node, &AlignofExpr::expr ); 1293 1288 } 1294 }1289 ) 1295 1290 1296 1291 VISIT_END( Expr, node ); … … 1303 1298 VISIT_START( node ); 1304 1299 1305 if ( __visit_children() ) { 1306 { 1300 VISIT({ 1307 1301 guard_symtab guard { *this }; 1308 1302 maybe_accept( node, &UntypedOffsetofExpr::result ); 1309 1303 } 1310 1304 maybe_accept( node, &UntypedOffsetofExpr::type ); 1311 }1305 ) 1312 1306 1313 1307 VISIT_END( Expr, node ); … … 1320 1314 VISIT_START( node ); 1321 1315 1322 if ( __visit_children() ) { 1323 { 1316 VISIT({ 1324 1317 guard_symtab guard { *this }; 1325 1318 maybe_accept( node, &OffsetofExpr::result ); 1326 1319 } 1327 1320 maybe_accept( node, &OffsetofExpr::type ); 1328 }1321 ) 1329 1322 1330 1323 VISIT_END( Expr, node ); … … 1337 1330 VISIT_START( node ); 1338 1331 1339 if ( __visit_children() ) { 1340 { 1332 VISIT({ 1341 1333 guard_symtab guard { *this }; 1342 1334 maybe_accept( node, &OffsetPackExpr::result ); 1343 1335 } 1344 1336 maybe_accept( node, &OffsetPackExpr::type ); 1345 }1337 ) 1346 1338 1347 1339 VISIT_END( Expr, node ); … … 1354 1346 VISIT_START( node ); 1355 1347 1356 if ( __visit_children() ) { 1357 { 1348 VISIT({ 1358 1349 guard_symtab guard { *this }; 1359 1350 maybe_accept( node, &LogicalExpr::result ); … … 1361 1352 maybe_accept( node, &LogicalExpr::arg1 ); 1362 1353 maybe_accept( node, &LogicalExpr::arg2 ); 1363 }1354 ) 1364 1355 1365 1356 VISIT_END( Expr, node ); … … 1372 1363 VISIT_START( node ); 1373 1364 1374 if ( __visit_children() ) { 1375 { 1365 VISIT({ 1376 1366 guard_symtab guard { *this }; 1377 1367 maybe_accept( node, &ConditionalExpr::result ); … … 1380 1370 maybe_accept( node, &ConditionalExpr::arg2 ); 1381 1371 maybe_accept( node, &ConditionalExpr::arg3 ); 1382 }1372 ) 1383 1373 1384 1374 VISIT_END( Expr, node ); … … 1391 1381 VISIT_START( node ); 1392 1382 1393 if ( __visit_children() ) { 1394 { 1383 VISIT({ 1395 1384 guard_symtab guard { *this }; 1396 1385 maybe_accept( node, &CommaExpr::result ); … … 1398 1387 maybe_accept( node, &CommaExpr::arg1 ); 1399 1388 maybe_accept( node, &CommaExpr::arg2 ); 1400 }1389 ) 1401 1390 1402 1391 VISIT_END( Expr, node ); … … 1409 1398 VISIT_START( node ); 1410 1399 1411 if ( __visit_children() ) { 1412 { 1400 VISIT({ 1413 1401 guard_symtab guard { *this }; 1414 1402 maybe_accept( node, &TypeExpr::result ); 1415 1403 } 1416 1404 maybe_accept( node, &TypeExpr::type ); 1417 }1405 ) 1418 1406 1419 1407 VISIT_END( Expr, node ); … … 1426 1414 VISIT_START( node ); 1427 1415 1428 if ( __visit_children() ) { 1429 { 1416 VISIT({ 1430 1417 guard_symtab guard { *this }; 1431 1418 maybe_accept( node, &AsmExpr::result ); … … 1433 1420 maybe_accept( node, &AsmExpr::constraint ); 1434 1421 maybe_accept( node, &AsmExpr::operand ); 1435 }1422 ) 1436 1423 1437 1424 VISIT_END( Expr, node ); … … 1444 1431 VISIT_START( node ); 1445 1432 1446 if ( __visit_children() ) { 1447 { 1433 VISIT({ 1448 1434 guard_symtab guard { *this }; 1449 1435 maybe_accept( node, &ImplicitCopyCtorExpr::result ); 1450 1436 } 1451 1437 maybe_accept( node, &ImplicitCopyCtorExpr::callExpr ); 1452 }1438 ) 1453 1439 1454 1440 VISIT_END( Expr, node ); … … 1461 1447 VISIT_START( node ); 1462 1448 1463 if ( __visit_children() ) { 1464 { 1449 VISIT({ 1465 1450 guard_symtab guard { *this }; 1466 1451 maybe_accept( node, &ConstructorExpr::result ); 1467 1452 } 1468 1453 maybe_accept( node, &ConstructorExpr::callExpr ); 1469 }1454 ) 1470 1455 1471 1456 VISIT_END( Expr, node ); … … 1478 1463 VISIT_START( node ); 1479 1464 1480 if ( __visit_children() ) { 1481 { 1465 VISIT({ 1482 1466 guard_symtab guard { *this }; 1483 1467 maybe_accept( node, &CompoundLiteralExpr::result ); 1484 1468 } 1485 1469 maybe_accept( node, &CompoundLiteralExpr::init ); 1486 }1470 ) 1487 1471 1488 1472 VISIT_END( Expr, node ); … … 1495 1479 VISIT_START( node ); 1496 1480 1497 if ( __visit_children() ) { 1498 { 1481 VISIT({ 1499 1482 guard_symtab guard { *this }; 1500 1483 maybe_accept( node, &RangeExpr::result ); … … 1502 1485 maybe_accept( node, &RangeExpr::low ); 1503 1486 maybe_accept( node, &RangeExpr::high ); 1504 }1487 ) 1505 1488 1506 1489 VISIT_END( Expr, node ); … … 1513 1496 VISIT_START( node ); 1514 1497 1515 if ( __visit_children() ) { 1516 { 1498 VISIT({ 1517 1499 guard_symtab guard { *this }; 1518 1500 maybe_accept( node, &UntypedTupleExpr::result ); 1519 1501 } 1520 1502 maybe_accept( node, &UntypedTupleExpr::exprs ); 1521 }1503 ) 1522 1504 1523 1505 VISIT_END( Expr, node ); … … 1530 1512 VISIT_START( node ); 1531 1513 1532 if ( __visit_children() ) { 1533 { 1514 VISIT({ 1534 1515 guard_symtab guard { *this }; 1535 1516 maybe_accept( node, &TupleExpr::result ); 1536 1517 } 1537 1518 maybe_accept( node, &TupleExpr::exprs ); 1538 }1519 ) 1539 1520 1540 1521 VISIT_END( Expr, node ); … … 1547 1528 VISIT_START( node ); 1548 1529 1549 if ( __visit_children() ) { 1550 { 1530 VISIT({ 1551 1531 guard_symtab guard { *this }; 1552 1532 maybe_accept( node, &TupleIndexExpr::result ); 1553 1533 } 1554 1534 maybe_accept( node, &TupleIndexExpr::tuple ); 1555 }1535 ) 1556 1536 1557 1537 VISIT_END( Expr, node ); … … 1564 1544 VISIT_START( node ); 1565 1545 1566 if ( __visit_children() ) { 1567 { 1546 VISIT({ 1568 1547 guard_symtab guard { *this }; 1569 1548 maybe_accept( node, &TupleAssignExpr::result ); 1570 1549 } 1571 1550 maybe_accept( node, &TupleAssignExpr::stmtExpr ); 1572 }1551 ) 1573 1552 1574 1553 VISIT_END( Expr, node ); … … 1581 1560 VISIT_START( node ); 1582 1561 1583 if ( __visit_children() ) { 1584 // don't want statements from outer CompoundStmts to be added to this StmtExpr 1562 VISIT(// don't want statements from outer CompoundStmts to be added to this StmtExpr 1585 1563 // get the stmts that will need to be spliced in 1586 1564 auto stmts_before = __pass::stmtsToAddBefore( core, 0); … … 1599 1577 maybe_accept( node, &StmtExpr::returnDecls ); 1600 1578 maybe_accept( node, &StmtExpr::dtors ); 1601 }1579 ) 1602 1580 1603 1581 VISIT_END( Expr, node ); … … 1610 1588 VISIT_START( node ); 1611 1589 1612 if ( __visit_children() ) { 1613 { 1590 VISIT({ 1614 1591 guard_symtab guard { *this }; 1615 1592 maybe_accept( node, &UniqueExpr::result ); 1616 1593 } 1617 1594 maybe_accept( node, &UniqueExpr::expr ); 1618 }1595 ) 1619 1596 1620 1597 VISIT_END( Expr, node ); … … 1627 1604 VISIT_START( node ); 1628 1605 1629 if ( __visit_children() ) { 1630 { 1606 VISIT({ 1631 1607 guard_symtab guard { *this }; 1632 1608 maybe_accept( node, &UntypedInitExpr::result ); … … 1634 1610 maybe_accept( node, &UntypedInitExpr::expr ); 1635 1611 // not currently visiting initAlts, but this doesn't matter since this node is only used in the resolver. 1636 }1612 ) 1637 1613 1638 1614 VISIT_END( Expr, node ); … … 1645 1621 VISIT_START( node ); 1646 1622 1647 if ( __visit_children() ) { 1648 { 1623 VISIT({ 1649 1624 guard_symtab guard { *this }; 1650 1625 maybe_accept( node, &InitExpr::result ); … … 1652 1627 maybe_accept( node, &InitExpr::expr ); 1653 1628 maybe_accept( node, &InitExpr::designation ); 1654 }1629 ) 1655 1630 1656 1631 VISIT_END( Expr, node ); … … 1663 1638 VISIT_START( node ); 1664 1639 1665 if ( __visit_children() ) { 1666 { 1640 VISIT({ 1667 1641 guard_symtab guard { *this }; 1668 1642 maybe_accept( node, &DeletedExpr::result ); … … 1670 1644 maybe_accept( node, &DeletedExpr::expr ); 1671 1645 // don't visit deleteStmt, because it is a pointer to somewhere else in the tree. 1672 }1646 ) 1673 1647 1674 1648 VISIT_END( Expr, node ); … … 1681 1655 VISIT_START( node ); 1682 1656 1683 if ( __visit_children() ) { 1684 { 1657 VISIT({ 1685 1658 guard_symtab guard { *this }; 1686 1659 maybe_accept( node, &DefaultArgExpr::result ); 1687 1660 } 1688 1661 maybe_accept( node, &DefaultArgExpr::expr ); 1689 }1662 ) 1690 1663 1691 1664 VISIT_END( Expr, node ); … … 1698 1671 VISIT_START( node ); 1699 1672 1700 if ( __visit_children() ) { 1701 { 1673 VISIT({ 1702 1674 guard_symtab guard { *this }; 1703 1675 maybe_accept( node, &GenericExpr::result ); … … 1728 1700 node = n; 1729 1701 } 1730 }1702 ) 1731 1703 1732 1704 VISIT_END( Expr, node ); … … 1757 1729 VISIT_START( node ); 1758 1730 1759 if ( __visit_children() ) {1731 VISIT( 1760 1732 // xxx - should PointerType visit/mutate dimension? 1761 1733 maybe_accept( node, &PointerType::base ); 1762 }1734 ) 1763 1735 1764 1736 VISIT_END( Type, node ); … … 1771 1743 VISIT_START( node ); 1772 1744 1773 if ( __visit_children() ) {1745 VISIT( 1774 1746 maybe_accept( node, &ArrayType::dimension ); 1775 1747 maybe_accept( node, &ArrayType::base ); 1776 }1748 ) 1777 1749 1778 1750 VISIT_END( Type, node ); … … 1785 1757 VISIT_START( node ); 1786 1758 1787 if ( __visit_children() ) {1759 VISIT( 1788 1760 maybe_accept( node, &ReferenceType::base ); 1789 }1761 ) 1790 1762 1791 1763 VISIT_END( Type, node ); … … 1798 1770 VISIT_START( node ); 1799 1771 1800 if ( __visit_children() ) {1772 VISIT( 1801 1773 maybe_accept( node, &QualifiedType::parent ); 1802 1774 maybe_accept( node, &QualifiedType::child ); 1803 }1775 ) 1804 1776 1805 1777 VISIT_END( Type, node ); … … 1812 1784 VISIT_START( node ); 1813 1785 1814 if ( __visit_children() ){1786 VISIT({ 1815 1787 // guard_forall_subs forall_guard { *this, node }; 1816 1788 // mutate_forall( node ); … … 1818 1790 maybe_accept( node, &FunctionType::returns ); 1819 1791 maybe_accept( node, &FunctionType::params ); 1820 } 1792 }) 1821 1793 1822 1794 VISIT_END( Type, node ); … … 1831 1803 __pass::symtab::addStruct( core, 0, node->name ); 1832 1804 1833 if ( __visit_children() ){1805 VISIT({ 1834 1806 guard_symtab guard { *this }; 1835 1807 maybe_accept( node, &StructInstType::params ); 1836 } 1808 }) 1837 1809 1838 1810 VISIT_END( Type, node ); … … 1847 1819 __pass::symtab::addUnion( core, 0, node->name ); 1848 1820 1849 if ( __visit_children() ){1821 VISIT({ 1850 1822 guard_symtab guard { *this }; 1851 1823 maybe_accept( node, &UnionInstType::params ); 1852 } 1824 }) 1853 1825 1854 1826 VISIT_END( Type, node ); … … 1861 1833 VISIT_START( node ); 1862 1834 1863 if ( __visit_children() ){1835 VISIT({ 1864 1836 maybe_accept( node, &EnumInstType::params ); 1865 } 1837 }) 1866 1838 1867 1839 VISIT_END( Type, node ); … … 1874 1846 VISIT_START( node ); 1875 1847 1876 if ( __visit_children() ){1848 VISIT({ 1877 1849 maybe_accept( node, &TraitInstType::params ); 1878 } 1850 }) 1879 1851 1880 1852 VISIT_END( Type, node ); … … 1887 1859 VISIT_START( node ); 1888 1860 1889 if ( __visit_children() ) {1861 VISIT( 1890 1862 { 1891 1863 maybe_accept( node, &TypeInstType::params ); … … 1893 1865 // ensure that base re-bound if doing substitution 1894 1866 __pass::forall::replace( core, 0, node ); 1895 }1867 ) 1896 1868 1897 1869 VISIT_END( Type, node ); … … 1904 1876 VISIT_START( node ); 1905 1877 1906 if ( __visit_children() ) {1878 VISIT( 1907 1879 maybe_accept( node, &TupleType::types ); 1908 1880 maybe_accept( node, &TupleType::members ); 1909 }1881 ) 1910 1882 1911 1883 VISIT_END( Type, node ); … … 1918 1890 VISIT_START( node ); 1919 1891 1920 if ( __visit_children() ) {1892 VISIT( 1921 1893 maybe_accept( node, &TypeofType::expr ); 1922 }1894 ) 1923 1895 1924 1896 VISIT_END( Type, node ); … … 1931 1903 VISIT_START( node ); 1932 1904 1933 if ( __visit_children() ) {1905 VISIT( 1934 1906 maybe_accept( node, &VTableType::base ); 1935 }1907 ) 1936 1908 1937 1909 VISIT_END( Type, node ); … … 1981 1953 VISIT_START( node ); 1982 1954 1983 if ( __visit_children() ) { 1984 maybe_accept( node, &Designation::designators ); 1985 } 1955 VISIT( maybe_accept( node, &Designation::designators ); ) 1986 1956 1987 1957 VISIT_END( Designation, node ); … … 1994 1964 VISIT_START( node ); 1995 1965 1996 if ( __visit_children() ) {1966 VISIT( 1997 1967 maybe_accept( node, &SingleInit::value ); 1998 }1968 ) 1999 1969 2000 1970 VISIT_END( Init, node ); … … 2007 1977 VISIT_START( node ); 2008 1978 2009 if ( __visit_children() ) {1979 VISIT( 2010 1980 maybe_accept( node, &ListInit::designations ); 2011 1981 maybe_accept( node, &ListInit::initializers ); 2012 }1982 ) 2013 1983 2014 1984 VISIT_END( Init, node ); … … 2021 1991 VISIT_START( node ); 2022 1992 2023 if ( __visit_children() ) {1993 VISIT( 2024 1994 maybe_accept( node, &ConstructorInit::ctor ); 2025 1995 maybe_accept( node, &ConstructorInit::dtor ); 2026 1996 maybe_accept( node, &ConstructorInit::init ); 2027 }1997 ) 2028 1998 2029 1999 VISIT_END( Init, node ); … … 2036 2006 VISIT_START( node ); 2037 2007 2038 if ( __visit_children() ) {2008 VISIT( 2039 2009 maybe_accept( node, &Attribute::params ); 2040 }2010 ) 2041 2011 2042 2012 VISIT_END( Attribute, node ); … … 2049 2019 VISIT_START( node ); 2050 2020 2051 if ( __visit_children() ) {2021 VISIT( 2052 2022 { 2053 2023 bool mutated = false; … … 2065 2035 } 2066 2036 } 2067 }2037 ) 2068 2038 2069 2039 VISIT_END( TypeSubstitution, node ); … … 2071 2041 2072 2042 #undef VISIT_START 2043 #undef VISIT 2073 2044 #undef VISIT_END
Note:
See TracChangeset
for help on using the changeset viewer.