Changes in src/AST/Pass.impl.hpp [e21f253:c600df1]
- File:
-
- 1 edited
-
src/AST/Pass.impl.hpp (modified) (120 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Pass.impl.hpp
re21f253 rc600df1 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() ){1052 VISIT({ 1053 1053 // mutex statements introduce a level of scope (for the initialization) 1054 1054 guard_symtab guard { *this }; 1055 1055 maybe_accept( node, &MutexStmt::stmt ); 1056 1056 maybe_accept( node, &MutexStmt::mutexObjs ); 1057 } 1057 }) 1058 1058 1059 1059 VISIT_END( Stmt, node ); … … 1066 1066 VISIT_START( node ); 1067 1067 1068 if ( __visit_children() ) {1068 VISIT( 1069 1069 { 1070 1070 guard_symtab guard { *this }; … … 1073 1073 maybe_accept( node, &ApplicationExpr::func ); 1074 1074 maybe_accept( node, &ApplicationExpr::args ); 1075 }1075 ) 1076 1076 1077 1077 VISIT_END( Expr, node ); … … 1084 1084 VISIT_START( node ); 1085 1085 1086 if ( __visit_children() ) {1086 VISIT( 1087 1087 { 1088 1088 guard_symtab guard { *this }; … … 1091 1091 1092 1092 maybe_accept( node, &UntypedExpr::args ); 1093 }1093 ) 1094 1094 1095 1095 VISIT_END( Expr, node ); … … 1102 1102 VISIT_START( node ); 1103 1103 1104 if ( __visit_children() ){1104 VISIT({ 1105 1105 guard_symtab guard { *this }; 1106 1106 maybe_accept( node, &NameExpr::result ); 1107 } 1107 }) 1108 1108 1109 1109 VISIT_END( Expr, node ); … … 1116 1116 VISIT_START( node ); 1117 1117 1118 if ( __visit_children() ) { 1119 { 1118 VISIT({ 1120 1119 guard_symtab guard { *this }; 1121 1120 maybe_accept( node, &CastExpr::result ); 1122 1121 } 1123 1122 maybe_accept( node, &CastExpr::arg ); 1124 }1123 ) 1125 1124 1126 1125 VISIT_END( Expr, node ); … … 1133 1132 VISIT_START( node ); 1134 1133 1135 if ( __visit_children() ) { 1136 { 1134 VISIT({ 1137 1135 guard_symtab guard { *this }; 1138 1136 maybe_accept( node, &KeywordCastExpr::result ); 1139 1137 } 1140 1138 maybe_accept( node, &KeywordCastExpr::arg ); 1141 }1139 ) 1142 1140 1143 1141 VISIT_END( Expr, node ); … … 1150 1148 VISIT_START( node ); 1151 1149 1152 if ( __visit_children() ) { 1153 { 1150 VISIT({ 1154 1151 guard_symtab guard { *this }; 1155 1152 maybe_accept( node, &VirtualCastExpr::result ); 1156 1153 } 1157 1154 maybe_accept( node, &VirtualCastExpr::arg ); 1158 }1155 ) 1159 1156 1160 1157 VISIT_END( Expr, node ); … … 1167 1164 VISIT_START( node ); 1168 1165 1169 if ( __visit_children() ) { 1170 { 1166 VISIT({ 1171 1167 guard_symtab guard { *this }; 1172 1168 maybe_accept( node, &AddressExpr::result ); 1173 1169 } 1174 1170 maybe_accept( node, &AddressExpr::arg ); 1175 }1171 ) 1176 1172 1177 1173 VISIT_END( Expr, node ); … … 1184 1180 VISIT_START( node ); 1185 1181 1186 if ( __visit_children() ){1182 VISIT({ 1187 1183 guard_symtab guard { *this }; 1188 1184 maybe_accept( node, &LabelAddressExpr::result ); 1189 } 1185 }) 1190 1186 1191 1187 VISIT_END( Expr, node ); … … 1198 1194 VISIT_START( node ); 1199 1195 1200 if ( __visit_children() ) { 1201 { 1196 VISIT({ 1202 1197 guard_symtab guard { *this }; 1203 1198 maybe_accept( node, &UntypedMemberExpr::result ); … … 1205 1200 maybe_accept( node, &UntypedMemberExpr::aggregate ); 1206 1201 maybe_accept( node, &UntypedMemberExpr::member ); 1207 }1202 ) 1208 1203 1209 1204 VISIT_END( Expr, node ); … … 1216 1211 VISIT_START( node ); 1217 1212 1218 if ( __visit_children() ) { 1219 { 1213 VISIT({ 1220 1214 guard_symtab guard { *this }; 1221 1215 maybe_accept( node, &MemberExpr::result ); 1222 1216 } 1223 1217 maybe_accept( node, &MemberExpr::aggregate ); 1224 }1218 ) 1225 1219 1226 1220 VISIT_END( Expr, node ); … … 1233 1227 VISIT_START( node ); 1234 1228 1235 if ( __visit_children() ){1229 VISIT({ 1236 1230 guard_symtab guard { *this }; 1237 1231 maybe_accept( node, &VariableExpr::result ); 1238 } 1232 }) 1239 1233 1240 1234 VISIT_END( Expr, node ); … … 1247 1241 VISIT_START( node ); 1248 1242 1249 if ( __visit_children() ){1243 VISIT({ 1250 1244 guard_symtab guard { *this }; 1251 1245 maybe_accept( node, &ConstantExpr::result ); 1252 } 1246 }) 1253 1247 1254 1248 VISIT_END( Expr, node ); … … 1261 1255 VISIT_START( node ); 1262 1256 1263 if ( __visit_children() ) { 1264 { 1257 VISIT({ 1265 1258 guard_symtab guard { *this }; 1266 1259 maybe_accept( node, &SizeofExpr::result ); … … 1271 1264 maybe_accept( node, &SizeofExpr::expr ); 1272 1265 } 1273 }1266 ) 1274 1267 1275 1268 VISIT_END( Expr, node ); … … 1282 1275 VISIT_START( node ); 1283 1276 1284 if ( __visit_children() ) { 1285 { 1277 VISIT({ 1286 1278 guard_symtab guard { *this }; 1287 1279 maybe_accept( node, &AlignofExpr::result ); … … 1292 1284 maybe_accept( node, &AlignofExpr::expr ); 1293 1285 } 1294 }1286 ) 1295 1287 1296 1288 VISIT_END( Expr, node ); … … 1303 1295 VISIT_START( node ); 1304 1296 1305 if ( __visit_children() ) { 1306 { 1297 VISIT({ 1307 1298 guard_symtab guard { *this }; 1308 1299 maybe_accept( node, &UntypedOffsetofExpr::result ); 1309 1300 } 1310 1301 maybe_accept( node, &UntypedOffsetofExpr::type ); 1311 }1302 ) 1312 1303 1313 1304 VISIT_END( Expr, node ); … … 1320 1311 VISIT_START( node ); 1321 1312 1322 if ( __visit_children() ) { 1323 { 1313 VISIT({ 1324 1314 guard_symtab guard { *this }; 1325 1315 maybe_accept( node, &OffsetofExpr::result ); 1326 1316 } 1327 1317 maybe_accept( node, &OffsetofExpr::type ); 1328 }1318 ) 1329 1319 1330 1320 VISIT_END( Expr, node ); … … 1337 1327 VISIT_START( node ); 1338 1328 1339 if ( __visit_children() ) { 1340 { 1329 VISIT({ 1341 1330 guard_symtab guard { *this }; 1342 1331 maybe_accept( node, &OffsetPackExpr::result ); 1343 1332 } 1344 1333 maybe_accept( node, &OffsetPackExpr::type ); 1345 }1334 ) 1346 1335 1347 1336 VISIT_END( Expr, node ); … … 1354 1343 VISIT_START( node ); 1355 1344 1356 if ( __visit_children() ) { 1357 { 1345 VISIT({ 1358 1346 guard_symtab guard { *this }; 1359 1347 maybe_accept( node, &LogicalExpr::result ); … … 1361 1349 maybe_accept( node, &LogicalExpr::arg1 ); 1362 1350 maybe_accept( node, &LogicalExpr::arg2 ); 1363 }1351 ) 1364 1352 1365 1353 VISIT_END( Expr, node ); … … 1372 1360 VISIT_START( node ); 1373 1361 1374 if ( __visit_children() ) { 1375 { 1362 VISIT({ 1376 1363 guard_symtab guard { *this }; 1377 1364 maybe_accept( node, &ConditionalExpr::result ); … … 1380 1367 maybe_accept( node, &ConditionalExpr::arg2 ); 1381 1368 maybe_accept( node, &ConditionalExpr::arg3 ); 1382 }1369 ) 1383 1370 1384 1371 VISIT_END( Expr, node ); … … 1391 1378 VISIT_START( node ); 1392 1379 1393 if ( __visit_children() ) { 1394 { 1380 VISIT({ 1395 1381 guard_symtab guard { *this }; 1396 1382 maybe_accept( node, &CommaExpr::result ); … … 1398 1384 maybe_accept( node, &CommaExpr::arg1 ); 1399 1385 maybe_accept( node, &CommaExpr::arg2 ); 1400 }1386 ) 1401 1387 1402 1388 VISIT_END( Expr, node ); … … 1409 1395 VISIT_START( node ); 1410 1396 1411 if ( __visit_children() ) { 1412 { 1397 VISIT({ 1413 1398 guard_symtab guard { *this }; 1414 1399 maybe_accept( node, &TypeExpr::result ); 1415 1400 } 1416 1401 maybe_accept( node, &TypeExpr::type ); 1417 }1402 ) 1418 1403 1419 1404 VISIT_END( Expr, node ); … … 1426 1411 VISIT_START( node ); 1427 1412 1428 if ( __visit_children() ) { 1429 { 1413 VISIT({ 1430 1414 guard_symtab guard { *this }; 1431 1415 maybe_accept( node, &AsmExpr::result ); … … 1433 1417 maybe_accept( node, &AsmExpr::constraint ); 1434 1418 maybe_accept( node, &AsmExpr::operand ); 1435 }1419 ) 1436 1420 1437 1421 VISIT_END( Expr, node ); … … 1444 1428 VISIT_START( node ); 1445 1429 1446 if ( __visit_children() ) { 1447 { 1430 VISIT({ 1448 1431 guard_symtab guard { *this }; 1449 1432 maybe_accept( node, &ImplicitCopyCtorExpr::result ); 1450 1433 } 1451 1434 maybe_accept( node, &ImplicitCopyCtorExpr::callExpr ); 1452 }1435 ) 1453 1436 1454 1437 VISIT_END( Expr, node ); … … 1461 1444 VISIT_START( node ); 1462 1445 1463 if ( __visit_children() ) { 1464 { 1446 VISIT({ 1465 1447 guard_symtab guard { *this }; 1466 1448 maybe_accept( node, &ConstructorExpr::result ); 1467 1449 } 1468 1450 maybe_accept( node, &ConstructorExpr::callExpr ); 1469 }1451 ) 1470 1452 1471 1453 VISIT_END( Expr, node ); … … 1478 1460 VISIT_START( node ); 1479 1461 1480 if ( __visit_children() ) { 1481 { 1462 VISIT({ 1482 1463 guard_symtab guard { *this }; 1483 1464 maybe_accept( node, &CompoundLiteralExpr::result ); 1484 1465 } 1485 1466 maybe_accept( node, &CompoundLiteralExpr::init ); 1486 }1467 ) 1487 1468 1488 1469 VISIT_END( Expr, node ); … … 1495 1476 VISIT_START( node ); 1496 1477 1497 if ( __visit_children() ) { 1498 { 1478 VISIT({ 1499 1479 guard_symtab guard { *this }; 1500 1480 maybe_accept( node, &RangeExpr::result ); … … 1502 1482 maybe_accept( node, &RangeExpr::low ); 1503 1483 maybe_accept( node, &RangeExpr::high ); 1504 }1484 ) 1505 1485 1506 1486 VISIT_END( Expr, node ); … … 1513 1493 VISIT_START( node ); 1514 1494 1515 if ( __visit_children() ) { 1516 { 1495 VISIT({ 1517 1496 guard_symtab guard { *this }; 1518 1497 maybe_accept( node, &UntypedTupleExpr::result ); 1519 1498 } 1520 1499 maybe_accept( node, &UntypedTupleExpr::exprs ); 1521 }1500 ) 1522 1501 1523 1502 VISIT_END( Expr, node ); … … 1530 1509 VISIT_START( node ); 1531 1510 1532 if ( __visit_children() ) { 1533 { 1511 VISIT({ 1534 1512 guard_symtab guard { *this }; 1535 1513 maybe_accept( node, &TupleExpr::result ); 1536 1514 } 1537 1515 maybe_accept( node, &TupleExpr::exprs ); 1538 }1516 ) 1539 1517 1540 1518 VISIT_END( Expr, node ); … … 1547 1525 VISIT_START( node ); 1548 1526 1549 if ( __visit_children() ) { 1550 { 1527 VISIT({ 1551 1528 guard_symtab guard { *this }; 1552 1529 maybe_accept( node, &TupleIndexExpr::result ); 1553 1530 } 1554 1531 maybe_accept( node, &TupleIndexExpr::tuple ); 1555 }1532 ) 1556 1533 1557 1534 VISIT_END( Expr, node ); … … 1564 1541 VISIT_START( node ); 1565 1542 1566 if ( __visit_children() ) { 1567 { 1543 VISIT({ 1568 1544 guard_symtab guard { *this }; 1569 1545 maybe_accept( node, &TupleAssignExpr::result ); 1570 1546 } 1571 1547 maybe_accept( node, &TupleAssignExpr::stmtExpr ); 1572 }1548 ) 1573 1549 1574 1550 VISIT_END( Expr, node ); … … 1581 1557 VISIT_START( node ); 1582 1558 1583 if ( __visit_children() ) { 1584 // don't want statements from outer CompoundStmts to be added to this StmtExpr 1559 VISIT(// don't want statements from outer CompoundStmts to be added to this StmtExpr 1585 1560 // get the stmts that will need to be spliced in 1586 1561 auto stmts_before = __pass::stmtsToAddBefore( core, 0); … … 1599 1574 maybe_accept( node, &StmtExpr::returnDecls ); 1600 1575 maybe_accept( node, &StmtExpr::dtors ); 1601 }1576 ) 1602 1577 1603 1578 VISIT_END( Expr, node ); … … 1610 1585 VISIT_START( node ); 1611 1586 1612 if ( __visit_children() ) { 1613 { 1587 VISIT({ 1614 1588 guard_symtab guard { *this }; 1615 1589 maybe_accept( node, &UniqueExpr::result ); 1616 1590 } 1617 1591 maybe_accept( node, &UniqueExpr::expr ); 1618 }1592 ) 1619 1593 1620 1594 VISIT_END( Expr, node ); … … 1627 1601 VISIT_START( node ); 1628 1602 1629 if ( __visit_children() ) { 1630 { 1603 VISIT({ 1631 1604 guard_symtab guard { *this }; 1632 1605 maybe_accept( node, &UntypedInitExpr::result ); … … 1634 1607 maybe_accept( node, &UntypedInitExpr::expr ); 1635 1608 // not currently visiting initAlts, but this doesn't matter since this node is only used in the resolver. 1636 }1609 ) 1637 1610 1638 1611 VISIT_END( Expr, node ); … … 1645 1618 VISIT_START( node ); 1646 1619 1647 if ( __visit_children() ) { 1648 { 1620 VISIT({ 1649 1621 guard_symtab guard { *this }; 1650 1622 maybe_accept( node, &InitExpr::result ); … … 1652 1624 maybe_accept( node, &InitExpr::expr ); 1653 1625 maybe_accept( node, &InitExpr::designation ); 1654 }1626 ) 1655 1627 1656 1628 VISIT_END( Expr, node ); … … 1663 1635 VISIT_START( node ); 1664 1636 1665 if ( __visit_children() ) { 1666 { 1637 VISIT({ 1667 1638 guard_symtab guard { *this }; 1668 1639 maybe_accept( node, &DeletedExpr::result ); … … 1670 1641 maybe_accept( node, &DeletedExpr::expr ); 1671 1642 // don't visit deleteStmt, because it is a pointer to somewhere else in the tree. 1672 }1643 ) 1673 1644 1674 1645 VISIT_END( Expr, node ); … … 1681 1652 VISIT_START( node ); 1682 1653 1683 if ( __visit_children() ) { 1684 { 1654 VISIT({ 1685 1655 guard_symtab guard { *this }; 1686 1656 maybe_accept( node, &DefaultArgExpr::result ); 1687 1657 } 1688 1658 maybe_accept( node, &DefaultArgExpr::expr ); 1689 }1659 ) 1690 1660 1691 1661 VISIT_END( Expr, node ); … … 1698 1668 VISIT_START( node ); 1699 1669 1700 if ( __visit_children() ) { 1701 { 1670 VISIT({ 1702 1671 guard_symtab guard { *this }; 1703 1672 maybe_accept( node, &GenericExpr::result ); … … 1728 1697 node = n; 1729 1698 } 1730 }1699 ) 1731 1700 1732 1701 VISIT_END( Expr, node ); … … 1757 1726 VISIT_START( node ); 1758 1727 1759 if ( __visit_children() ) {1728 VISIT( 1760 1729 // xxx - should PointerType visit/mutate dimension? 1761 1730 maybe_accept( node, &PointerType::base ); 1762 }1731 ) 1763 1732 1764 1733 VISIT_END( Type, node ); … … 1771 1740 VISIT_START( node ); 1772 1741 1773 if ( __visit_children() ) {1742 VISIT( 1774 1743 maybe_accept( node, &ArrayType::dimension ); 1775 1744 maybe_accept( node, &ArrayType::base ); 1776 }1745 ) 1777 1746 1778 1747 VISIT_END( Type, node ); … … 1785 1754 VISIT_START( node ); 1786 1755 1787 if ( __visit_children() ) {1756 VISIT( 1788 1757 maybe_accept( node, &ReferenceType::base ); 1789 }1758 ) 1790 1759 1791 1760 VISIT_END( Type, node ); … … 1798 1767 VISIT_START( node ); 1799 1768 1800 if ( __visit_children() ) {1769 VISIT( 1801 1770 maybe_accept( node, &QualifiedType::parent ); 1802 1771 maybe_accept( node, &QualifiedType::child ); 1803 }1772 ) 1804 1773 1805 1774 VISIT_END( Type, node ); … … 1812 1781 VISIT_START( node ); 1813 1782 1814 if ( __visit_children() ){1783 VISIT({ 1815 1784 // guard_forall_subs forall_guard { *this, node }; 1816 1785 // mutate_forall( node ); … … 1818 1787 maybe_accept( node, &FunctionType::returns ); 1819 1788 maybe_accept( node, &FunctionType::params ); 1820 } 1789 }) 1821 1790 1822 1791 VISIT_END( Type, node ); … … 1831 1800 __pass::symtab::addStruct( core, 0, node->name ); 1832 1801 1833 if ( __visit_children() ){1802 VISIT({ 1834 1803 guard_symtab guard { *this }; 1835 1804 maybe_accept( node, &StructInstType::params ); 1836 } 1805 }) 1837 1806 1838 1807 VISIT_END( Type, node ); … … 1847 1816 __pass::symtab::addUnion( core, 0, node->name ); 1848 1817 1849 if ( __visit_children() ){1818 VISIT({ 1850 1819 guard_symtab guard { *this }; 1851 1820 maybe_accept( node, &UnionInstType::params ); 1852 } 1821 }) 1853 1822 1854 1823 VISIT_END( Type, node ); … … 1861 1830 VISIT_START( node ); 1862 1831 1863 if ( __visit_children() ){1832 VISIT({ 1864 1833 maybe_accept( node, &EnumInstType::params ); 1865 } 1834 }) 1866 1835 1867 1836 VISIT_END( Type, node ); … … 1874 1843 VISIT_START( node ); 1875 1844 1876 if ( __visit_children() ){1845 VISIT({ 1877 1846 maybe_accept( node, &TraitInstType::params ); 1878 } 1847 }) 1879 1848 1880 1849 VISIT_END( Type, node ); … … 1887 1856 VISIT_START( node ); 1888 1857 1889 if ( __visit_children() ) {1858 VISIT( 1890 1859 { 1891 1860 maybe_accept( node, &TypeInstType::params ); … … 1893 1862 // ensure that base re-bound if doing substitution 1894 1863 __pass::forall::replace( core, 0, node ); 1895 }1864 ) 1896 1865 1897 1866 VISIT_END( Type, node ); … … 1904 1873 VISIT_START( node ); 1905 1874 1906 if ( __visit_children() ) {1875 VISIT( 1907 1876 maybe_accept( node, &TupleType::types ); 1908 1877 maybe_accept( node, &TupleType::members ); 1909 }1878 ) 1910 1879 1911 1880 VISIT_END( Type, node ); … … 1918 1887 VISIT_START( node ); 1919 1888 1920 if ( __visit_children() ) {1889 VISIT( 1921 1890 maybe_accept( node, &TypeofType::expr ); 1922 }1891 ) 1923 1892 1924 1893 VISIT_END( Type, node ); … … 1931 1900 VISIT_START( node ); 1932 1901 1933 if ( __visit_children() ) {1902 VISIT( 1934 1903 maybe_accept( node, &VTableType::base ); 1935 }1904 ) 1936 1905 1937 1906 VISIT_END( Type, node ); … … 1981 1950 VISIT_START( node ); 1982 1951 1983 if ( __visit_children() ) { 1984 maybe_accept( node, &Designation::designators ); 1985 } 1952 VISIT( maybe_accept( node, &Designation::designators ); ) 1986 1953 1987 1954 VISIT_END( Designation, node ); … … 1994 1961 VISIT_START( node ); 1995 1962 1996 if ( __visit_children() ) {1963 VISIT( 1997 1964 maybe_accept( node, &SingleInit::value ); 1998 }1965 ) 1999 1966 2000 1967 VISIT_END( Init, node ); … … 2007 1974 VISIT_START( node ); 2008 1975 2009 if ( __visit_children() ) {1976 VISIT( 2010 1977 maybe_accept( node, &ListInit::designations ); 2011 1978 maybe_accept( node, &ListInit::initializers ); 2012 }1979 ) 2013 1980 2014 1981 VISIT_END( Init, node ); … … 2021 1988 VISIT_START( node ); 2022 1989 2023 if ( __visit_children() ) {1990 VISIT( 2024 1991 maybe_accept( node, &ConstructorInit::ctor ); 2025 1992 maybe_accept( node, &ConstructorInit::dtor ); 2026 1993 maybe_accept( node, &ConstructorInit::init ); 2027 }1994 ) 2028 1995 2029 1996 VISIT_END( Init, node ); … … 2036 2003 VISIT_START( node ); 2037 2004 2038 if ( __visit_children() ) {2005 VISIT( 2039 2006 maybe_accept( node, &Attribute::params ); 2040 }2007 ) 2041 2008 2042 2009 VISIT_END( Attribute, node ); … … 2049 2016 VISIT_START( node ); 2050 2017 2051 if ( __visit_children() ) {2018 VISIT( 2052 2019 { 2053 2020 bool mutated = false; … … 2065 2032 } 2066 2033 } 2067 }2034 ) 2068 2035 2069 2036 VISIT_END( TypeSubstitution, node ); … … 2071 2038 2072 2039 #undef VISIT_START 2040 #undef VISIT 2073 2041 #undef VISIT_END
Note:
See TracChangeset
for help on using the changeset viewer.