1 /** 2 * Compiler implementation of the 3 * $(LINK2 http://www.dlang.org, D programming language). 4 * 5 * Copyright: Copyright (c) 1999-2016 by Digital Mars, All Rights Reserved 6 * Authors: $(LINK2 http://www.digitalmars.com, Walter Bright) 7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 8 * Source: $(DMDSRC _visitor.d) 9 */ 10 11 module ddmd.visitor; 12 13 import ddmd.aggregate; 14 import ddmd.aliasthis; 15 import ddmd.attrib; 16 import ddmd.cond; 17 import ddmd.ctfeexpr; 18 import ddmd.dclass; 19 import ddmd.declaration; 20 import ddmd.denum; 21 import ddmd.dimport; 22 import ddmd.dmodule; 23 import ddmd.dstruct; 24 import ddmd.dsymbol; 25 import ddmd.dtemplate; 26 import ddmd.dversion; 27 import ddmd.expression; 28 import ddmd.func; 29 import ddmd.init; 30 import ddmd.mtype; 31 import ddmd.nspace; 32 import ddmd.statement; 33 import ddmd.staticassert; 34 35 extern (C++) class Visitor 36 { 37 void visit(Statement) 38 { 39 assert(0); 40 } 41 42 void visit(ErrorStatement s) 43 { 44 visit(cast(Statement)s); 45 } 46 47 void visit(PeelStatement s) 48 { 49 visit(cast(Statement)s); 50 } 51 52 void visit(ExpStatement s) 53 { 54 visit(cast(Statement)s); 55 } 56 57 void visit(DtorExpStatement s) 58 { 59 visit(cast(ExpStatement)s); 60 } 61 62 void visit(CompileStatement s) 63 { 64 visit(cast(Statement)s); 65 } 66 67 void visit(CompoundStatement s) 68 { 69 visit(cast(Statement)s); 70 } 71 72 void visit(CompoundDeclarationStatement s) 73 { 74 visit(cast(CompoundStatement)s); 75 } 76 77 void visit(UnrolledLoopStatement s) 78 { 79 visit(cast(Statement)s); 80 } 81 82 void visit(ScopeStatement s) 83 { 84 visit(cast(Statement)s); 85 } 86 87 void visit(WhileStatement s) 88 { 89 visit(cast(Statement)s); 90 } 91 92 void visit(DoStatement s) 93 { 94 visit(cast(Statement)s); 95 } 96 97 void visit(ForStatement s) 98 { 99 visit(cast(Statement)s); 100 } 101 102 void visit(ForeachStatement s) 103 { 104 visit(cast(Statement)s); 105 } 106 107 void visit(ForeachRangeStatement s) 108 { 109 visit(cast(Statement)s); 110 } 111 112 void visit(IfStatement s) 113 { 114 visit(cast(Statement)s); 115 } 116 117 void visit(ConditionalStatement s) 118 { 119 visit(cast(Statement)s); 120 } 121 122 void visit(PragmaStatement s) 123 { 124 visit(cast(Statement)s); 125 } 126 127 void visit(StaticAssertStatement s) 128 { 129 visit(cast(Statement)s); 130 } 131 132 void visit(SwitchStatement s) 133 { 134 visit(cast(Statement)s); 135 } 136 137 void visit(CaseStatement s) 138 { 139 visit(cast(Statement)s); 140 } 141 142 void visit(CaseRangeStatement s) 143 { 144 visit(cast(Statement)s); 145 } 146 147 void visit(DefaultStatement s) 148 { 149 visit(cast(Statement)s); 150 } 151 152 void visit(GotoDefaultStatement s) 153 { 154 visit(cast(Statement)s); 155 } 156 157 void visit(GotoCaseStatement s) 158 { 159 visit(cast(Statement)s); 160 } 161 162 void visit(SwitchErrorStatement s) 163 { 164 visit(cast(Statement)s); 165 } 166 167 void visit(ReturnStatement s) 168 { 169 visit(cast(Statement)s); 170 } 171 172 void visit(BreakStatement s) 173 { 174 visit(cast(Statement)s); 175 } 176 177 void visit(ContinueStatement s) 178 { 179 visit(cast(Statement)s); 180 } 181 182 void visit(SynchronizedStatement s) 183 { 184 visit(cast(Statement)s); 185 } 186 187 void visit(WithStatement s) 188 { 189 visit(cast(Statement)s); 190 } 191 192 void visit(TryCatchStatement s) 193 { 194 visit(cast(Statement)s); 195 } 196 197 void visit(TryFinallyStatement s) 198 { 199 visit(cast(Statement)s); 200 } 201 202 void visit(OnScopeStatement s) 203 { 204 visit(cast(Statement)s); 205 } 206 207 void visit(ThrowStatement s) 208 { 209 visit(cast(Statement)s); 210 } 211 212 void visit(DebugStatement s) 213 { 214 visit(cast(Statement)s); 215 } 216 217 void visit(GotoStatement s) 218 { 219 visit(cast(Statement)s); 220 } 221 222 void visit(LabelStatement s) 223 { 224 visit(cast(Statement)s); 225 } 226 227 void visit(AsmStatement s) 228 { 229 visit(cast(Statement)s); 230 } 231 232 void visit(CompoundAsmStatement s) 233 { 234 visit(cast(CompoundStatement)s); 235 } 236 237 void visit(ImportStatement s) 238 { 239 visit(cast(Statement)s); 240 } 241 242 void visit(Type) 243 { 244 assert(0); 245 } 246 247 void visit(TypeError t) 248 { 249 visit(cast(Type)t); 250 } 251 252 void visit(TypeNext t) 253 { 254 visit(cast(Type)t); 255 } 256 257 void visit(TypeBasic t) 258 { 259 visit(cast(Type)t); 260 } 261 262 void visit(TypeVector t) 263 { 264 visit(cast(Type)t); 265 } 266 267 void visit(TypeArray t) 268 { 269 visit(cast(TypeNext)t); 270 } 271 272 void visit(TypeSArray t) 273 { 274 visit(cast(TypeArray)t); 275 } 276 277 void visit(TypeDArray t) 278 { 279 visit(cast(TypeArray)t); 280 } 281 282 void visit(TypeAArray t) 283 { 284 visit(cast(TypeArray)t); 285 } 286 287 void visit(TypePointer t) 288 { 289 visit(cast(TypeNext)t); 290 } 291 292 void visit(TypeReference t) 293 { 294 visit(cast(TypeNext)t); 295 } 296 297 void visit(TypeFunction t) 298 { 299 visit(cast(TypeNext)t); 300 } 301 302 void visit(TypeDelegate t) 303 { 304 visit(cast(TypeNext)t); 305 } 306 307 void visit(TypeQualified t) 308 { 309 visit(cast(Type)t); 310 } 311 312 void visit(TypeIdentifier t) 313 { 314 visit(cast(TypeQualified)t); 315 } 316 317 void visit(TypeInstance t) 318 { 319 visit(cast(TypeQualified)t); 320 } 321 322 void visit(TypeTypeof t) 323 { 324 visit(cast(TypeQualified)t); 325 } 326 327 void visit(TypeReturn t) 328 { 329 visit(cast(TypeQualified)t); 330 } 331 332 void visit(TypeStruct t) 333 { 334 visit(cast(Type)t); 335 } 336 337 void visit(TypeEnum t) 338 { 339 visit(cast(Type)t); 340 } 341 342 void visit(TypeClass t) 343 { 344 visit(cast(Type)t); 345 } 346 347 void visit(TypeTuple t) 348 { 349 visit(cast(Type)t); 350 } 351 352 void visit(TypeSlice t) 353 { 354 visit(cast(TypeNext)t); 355 } 356 357 void visit(TypeNull t) 358 { 359 visit(cast(Type)t); 360 } 361 362 void visit(Dsymbol) 363 { 364 assert(0); 365 } 366 367 void visit(StaticAssert s) 368 { 369 visit(cast(Dsymbol)s); 370 } 371 372 void visit(DebugSymbol s) 373 { 374 visit(cast(Dsymbol)s); 375 } 376 377 void visit(VersionSymbol s) 378 { 379 visit(cast(Dsymbol)s); 380 } 381 382 void visit(EnumMember s) 383 { 384 visit(cast(VarDeclaration)s); 385 } 386 387 void visit(Import s) 388 { 389 visit(cast(Dsymbol)s); 390 } 391 392 void visit(OverloadSet s) 393 { 394 visit(cast(Dsymbol)s); 395 } 396 397 void visit(LabelDsymbol s) 398 { 399 visit(cast(Dsymbol)s); 400 } 401 402 void visit(AliasThis s) 403 { 404 visit(cast(Dsymbol)s); 405 } 406 407 void visit(AttribDeclaration s) 408 { 409 visit(cast(Dsymbol)s); 410 } 411 412 void visit(StorageClassDeclaration s) 413 { 414 visit(cast(AttribDeclaration)s); 415 } 416 417 void visit(DeprecatedDeclaration s) 418 { 419 visit(cast(StorageClassDeclaration)s); 420 } 421 422 void visit(LinkDeclaration s) 423 { 424 visit(cast(AttribDeclaration)s); 425 } 426 427 void visit(CPPMangleDeclaration s) 428 { 429 visit(cast(AttribDeclaration)s); 430 } 431 432 void visit(ProtDeclaration s) 433 { 434 visit(cast(AttribDeclaration)s); 435 } 436 437 void visit(AlignDeclaration s) 438 { 439 visit(cast(AttribDeclaration)s); 440 } 441 442 void visit(AnonDeclaration s) 443 { 444 visit(cast(AttribDeclaration)s); 445 } 446 447 void visit(PragmaDeclaration s) 448 { 449 visit(cast(AttribDeclaration)s); 450 } 451 452 void visit(ConditionalDeclaration s) 453 { 454 visit(cast(AttribDeclaration)s); 455 } 456 457 void visit(StaticIfDeclaration s) 458 { 459 visit(cast(ConditionalDeclaration)s); 460 } 461 462 void visit(CompileDeclaration s) 463 { 464 visit(cast(AttribDeclaration)s); 465 } 466 467 void visit(UserAttributeDeclaration s) 468 { 469 visit(cast(AttribDeclaration)s); 470 } 471 472 void visit(ScopeDsymbol s) 473 { 474 visit(cast(Dsymbol)s); 475 } 476 477 void visit(TemplateDeclaration s) 478 { 479 visit(cast(ScopeDsymbol)s); 480 } 481 482 void visit(TemplateInstance s) 483 { 484 visit(cast(ScopeDsymbol)s); 485 } 486 487 void visit(TemplateMixin s) 488 { 489 visit(cast(TemplateInstance)s); 490 } 491 492 void visit(EnumDeclaration s) 493 { 494 visit(cast(ScopeDsymbol)s); 495 } 496 497 void visit(Package s) 498 { 499 visit(cast(ScopeDsymbol)s); 500 } 501 502 void visit(Module s) 503 { 504 visit(cast(Package)s); 505 } 506 507 void visit(WithScopeSymbol s) 508 { 509 visit(cast(ScopeDsymbol)s); 510 } 511 512 void visit(ArrayScopeSymbol s) 513 { 514 visit(cast(ScopeDsymbol)s); 515 } 516 517 void visit(Nspace s) 518 { 519 visit(cast(ScopeDsymbol)s); 520 } 521 522 void visit(AggregateDeclaration s) 523 { 524 visit(cast(ScopeDsymbol)s); 525 } 526 527 void visit(StructDeclaration s) 528 { 529 visit(cast(AggregateDeclaration)s); 530 } 531 532 void visit(UnionDeclaration s) 533 { 534 visit(cast(StructDeclaration)s); 535 } 536 537 void visit(ClassDeclaration s) 538 { 539 visit(cast(AggregateDeclaration)s); 540 } 541 542 void visit(InterfaceDeclaration s) 543 { 544 visit(cast(ClassDeclaration)s); 545 } 546 547 void visit(Declaration s) 548 { 549 visit(cast(Dsymbol)s); 550 } 551 552 void visit(TupleDeclaration s) 553 { 554 visit(cast(Declaration)s); 555 } 556 557 void visit(AliasDeclaration s) 558 { 559 visit(cast(Declaration)s); 560 } 561 562 void visit(OverDeclaration s) 563 { 564 visit(cast(Declaration)s); 565 } 566 567 void visit(VarDeclaration s) 568 { 569 visit(cast(Declaration)s); 570 } 571 572 void visit(SymbolDeclaration s) 573 { 574 visit(cast(Declaration)s); 575 } 576 577 void visit(ThisDeclaration s) 578 { 579 visit(cast(VarDeclaration)s); 580 } 581 582 void visit(TypeInfoDeclaration s) 583 { 584 visit(cast(VarDeclaration)s); 585 } 586 587 void visit(TypeInfoStructDeclaration s) 588 { 589 visit(cast(TypeInfoDeclaration)s); 590 } 591 592 void visit(TypeInfoClassDeclaration s) 593 { 594 visit(cast(TypeInfoDeclaration)s); 595 } 596 597 void visit(TypeInfoInterfaceDeclaration s) 598 { 599 visit(cast(TypeInfoDeclaration)s); 600 } 601 602 void visit(TypeInfoPointerDeclaration s) 603 { 604 visit(cast(TypeInfoDeclaration)s); 605 } 606 607 void visit(TypeInfoArrayDeclaration s) 608 { 609 visit(cast(TypeInfoDeclaration)s); 610 } 611 612 void visit(TypeInfoStaticArrayDeclaration s) 613 { 614 visit(cast(TypeInfoDeclaration)s); 615 } 616 617 void visit(TypeInfoAssociativeArrayDeclaration s) 618 { 619 visit(cast(TypeInfoDeclaration)s); 620 } 621 622 void visit(TypeInfoEnumDeclaration s) 623 { 624 visit(cast(TypeInfoDeclaration)s); 625 } 626 627 void visit(TypeInfoFunctionDeclaration s) 628 { 629 visit(cast(TypeInfoDeclaration)s); 630 } 631 632 void visit(TypeInfoDelegateDeclaration s) 633 { 634 visit(cast(TypeInfoDeclaration)s); 635 } 636 637 void visit(TypeInfoTupleDeclaration s) 638 { 639 visit(cast(TypeInfoDeclaration)s); 640 } 641 642 void visit(TypeInfoConstDeclaration s) 643 { 644 visit(cast(TypeInfoDeclaration)s); 645 } 646 647 void visit(TypeInfoInvariantDeclaration s) 648 { 649 visit(cast(TypeInfoDeclaration)s); 650 } 651 652 void visit(TypeInfoSharedDeclaration s) 653 { 654 visit(cast(TypeInfoDeclaration)s); 655 } 656 657 void visit(TypeInfoWildDeclaration s) 658 { 659 visit(cast(TypeInfoDeclaration)s); 660 } 661 662 void visit(TypeInfoVectorDeclaration s) 663 { 664 visit(cast(TypeInfoDeclaration)s); 665 } 666 667 void visit(FuncDeclaration s) 668 { 669 visit(cast(Declaration)s); 670 } 671 672 void visit(FuncAliasDeclaration s) 673 { 674 visit(cast(FuncDeclaration)s); 675 } 676 677 void visit(FuncLiteralDeclaration s) 678 { 679 visit(cast(FuncDeclaration)s); 680 } 681 682 void visit(CtorDeclaration s) 683 { 684 visit(cast(FuncDeclaration)s); 685 } 686 687 void visit(PostBlitDeclaration s) 688 { 689 visit(cast(FuncDeclaration)s); 690 } 691 692 void visit(DtorDeclaration s) 693 { 694 visit(cast(FuncDeclaration)s); 695 } 696 697 void visit(StaticCtorDeclaration s) 698 { 699 visit(cast(FuncDeclaration)s); 700 } 701 702 void visit(SharedStaticCtorDeclaration s) 703 { 704 visit(cast(StaticCtorDeclaration)s); 705 } 706 707 void visit(StaticDtorDeclaration s) 708 { 709 visit(cast(FuncDeclaration)s); 710 } 711 712 void visit(SharedStaticDtorDeclaration s) 713 { 714 visit(cast(StaticDtorDeclaration)s); 715 } 716 717 void visit(InvariantDeclaration s) 718 { 719 visit(cast(FuncDeclaration)s); 720 } 721 722 void visit(UnitTestDeclaration s) 723 { 724 visit(cast(FuncDeclaration)s); 725 } 726 727 void visit(NewDeclaration s) 728 { 729 visit(cast(FuncDeclaration)s); 730 } 731 732 void visit(DeleteDeclaration s) 733 { 734 visit(cast(FuncDeclaration)s); 735 } 736 737 void visit(Initializer) 738 { 739 assert(0); 740 } 741 742 void visit(VoidInitializer i) 743 { 744 visit(cast(Initializer)i); 745 } 746 747 void visit(ErrorInitializer i) 748 { 749 visit(cast(Initializer)i); 750 } 751 752 void visit(StructInitializer i) 753 { 754 visit(cast(Initializer)i); 755 } 756 757 void visit(ArrayInitializer i) 758 { 759 visit(cast(Initializer)i); 760 } 761 762 void visit(ExpInitializer i) 763 { 764 visit(cast(Initializer)i); 765 } 766 767 void visit(Expression) 768 { 769 assert(0); 770 } 771 772 void visit(IntegerExp e) 773 { 774 visit(cast(Expression)e); 775 } 776 777 void visit(ErrorExp e) 778 { 779 visit(cast(Expression)e); 780 } 781 782 void visit(RealExp e) 783 { 784 visit(cast(Expression)e); 785 } 786 787 void visit(ComplexExp e) 788 { 789 visit(cast(Expression)e); 790 } 791 792 void visit(IdentifierExp e) 793 { 794 visit(cast(Expression)e); 795 } 796 797 void visit(DollarExp e) 798 { 799 visit(cast(IdentifierExp)e); 800 } 801 802 void visit(DsymbolExp e) 803 { 804 visit(cast(Expression)e); 805 } 806 807 void visit(ThisExp e) 808 { 809 visit(cast(Expression)e); 810 } 811 812 void visit(SuperExp e) 813 { 814 visit(cast(ThisExp)e); 815 } 816 817 void visit(NullExp e) 818 { 819 visit(cast(Expression)e); 820 } 821 822 void visit(StringExp e) 823 { 824 visit(cast(Expression)e); 825 } 826 827 void visit(TupleExp e) 828 { 829 visit(cast(Expression)e); 830 } 831 832 void visit(ArrayLiteralExp e) 833 { 834 visit(cast(Expression)e); 835 } 836 837 void visit(AssocArrayLiteralExp e) 838 { 839 visit(cast(Expression)e); 840 } 841 842 void visit(StructLiteralExp e) 843 { 844 visit(cast(Expression)e); 845 } 846 847 void visit(TypeExp e) 848 { 849 visit(cast(Expression)e); 850 } 851 852 void visit(ScopeExp e) 853 { 854 visit(cast(Expression)e); 855 } 856 857 void visit(TemplateExp e) 858 { 859 visit(cast(Expression)e); 860 } 861 862 void visit(NewExp e) 863 { 864 visit(cast(Expression)e); 865 } 866 867 void visit(NewAnonClassExp e) 868 { 869 visit(cast(Expression)e); 870 } 871 872 void visit(SymbolExp e) 873 { 874 visit(cast(Expression)e); 875 } 876 877 void visit(SymOffExp e) 878 { 879 visit(cast(SymbolExp)e); 880 } 881 882 void visit(VarExp e) 883 { 884 visit(cast(SymbolExp)e); 885 } 886 887 void visit(OverExp e) 888 { 889 visit(cast(Expression)e); 890 } 891 892 void visit(FuncExp e) 893 { 894 visit(cast(Expression)e); 895 } 896 897 void visit(DeclarationExp e) 898 { 899 visit(cast(Expression)e); 900 } 901 902 void visit(TypeidExp e) 903 { 904 visit(cast(Expression)e); 905 } 906 907 void visit(TraitsExp e) 908 { 909 visit(cast(Expression)e); 910 } 911 912 void visit(HaltExp e) 913 { 914 visit(cast(Expression)e); 915 } 916 917 void visit(IsExp e) 918 { 919 visit(cast(Expression)e); 920 } 921 922 void visit(UnaExp e) 923 { 924 visit(cast(Expression)e); 925 } 926 927 void visit(BinExp e) 928 { 929 visit(cast(Expression)e); 930 } 931 932 void visit(BinAssignExp e) 933 { 934 visit(cast(BinExp)e); 935 } 936 937 void visit(CompileExp e) 938 { 939 visit(cast(UnaExp)e); 940 } 941 942 void visit(ImportExp e) 943 { 944 visit(cast(UnaExp)e); 945 } 946 947 void visit(AssertExp e) 948 { 949 visit(cast(UnaExp)e); 950 } 951 952 void visit(DotIdExp e) 953 { 954 visit(cast(UnaExp)e); 955 } 956 957 void visit(DotTemplateExp e) 958 { 959 visit(cast(UnaExp)e); 960 } 961 962 void visit(DotVarExp e) 963 { 964 visit(cast(UnaExp)e); 965 } 966 967 void visit(DotTemplateInstanceExp e) 968 { 969 visit(cast(UnaExp)e); 970 } 971 972 void visit(DelegateExp e) 973 { 974 visit(cast(UnaExp)e); 975 } 976 977 void visit(DotTypeExp e) 978 { 979 visit(cast(UnaExp)e); 980 } 981 982 void visit(CallExp e) 983 { 984 visit(cast(UnaExp)e); 985 } 986 987 void visit(AddrExp e) 988 { 989 visit(cast(UnaExp)e); 990 } 991 992 void visit(PtrExp e) 993 { 994 visit(cast(UnaExp)e); 995 } 996 997 void visit(NegExp e) 998 { 999 visit(cast(UnaExp)e); 1000 } 1001 1002 void visit(UAddExp e) 1003 { 1004 visit(cast(UnaExp)e); 1005 } 1006 1007 void visit(ComExp e) 1008 { 1009 visit(cast(UnaExp)e); 1010 } 1011 1012 void visit(NotExp e) 1013 { 1014 visit(cast(UnaExp)e); 1015 } 1016 1017 void visit(DeleteExp e) 1018 { 1019 visit(cast(UnaExp)e); 1020 } 1021 1022 void visit(CastExp e) 1023 { 1024 visit(cast(UnaExp)e); 1025 } 1026 1027 void visit(VectorExp e) 1028 { 1029 visit(cast(UnaExp)e); 1030 } 1031 1032 void visit(SliceExp e) 1033 { 1034 visit(cast(UnaExp)e); 1035 } 1036 1037 void visit(ArrayLengthExp e) 1038 { 1039 visit(cast(UnaExp)e); 1040 } 1041 1042 void visit(IntervalExp e) 1043 { 1044 visit(cast(Expression)e); 1045 } 1046 1047 void visit(DelegatePtrExp e) 1048 { 1049 visit(cast(UnaExp)e); 1050 } 1051 1052 void visit(DelegateFuncptrExp e) 1053 { 1054 visit(cast(UnaExp)e); 1055 } 1056 1057 void visit(ArrayExp e) 1058 { 1059 visit(cast(UnaExp)e); 1060 } 1061 1062 void visit(DotExp e) 1063 { 1064 visit(cast(BinExp)e); 1065 } 1066 1067 void visit(CommaExp e) 1068 { 1069 visit(cast(BinExp)e); 1070 } 1071 1072 void visit(IndexExp e) 1073 { 1074 visit(cast(BinExp)e); 1075 } 1076 1077 void visit(PostExp e) 1078 { 1079 visit(cast(BinExp)e); 1080 } 1081 1082 void visit(PreExp e) 1083 { 1084 visit(cast(UnaExp)e); 1085 } 1086 1087 void visit(AssignExp e) 1088 { 1089 visit(cast(BinExp)e); 1090 } 1091 1092 void visit(ConstructExp e) 1093 { 1094 visit(cast(AssignExp)e); 1095 } 1096 1097 void visit(BlitExp e) 1098 { 1099 visit(cast(AssignExp)e); 1100 } 1101 1102 void visit(AddAssignExp e) 1103 { 1104 visit(cast(BinAssignExp)e); 1105 } 1106 1107 void visit(MinAssignExp e) 1108 { 1109 visit(cast(BinAssignExp)e); 1110 } 1111 1112 void visit(MulAssignExp e) 1113 { 1114 visit(cast(BinAssignExp)e); 1115 } 1116 1117 void visit(DivAssignExp e) 1118 { 1119 visit(cast(BinAssignExp)e); 1120 } 1121 1122 void visit(ModAssignExp e) 1123 { 1124 visit(cast(BinAssignExp)e); 1125 } 1126 1127 void visit(AndAssignExp e) 1128 { 1129 visit(cast(BinAssignExp)e); 1130 } 1131 1132 void visit(OrAssignExp e) 1133 { 1134 visit(cast(BinAssignExp)e); 1135 } 1136 1137 void visit(XorAssignExp e) 1138 { 1139 visit(cast(BinAssignExp)e); 1140 } 1141 1142 void visit(PowAssignExp e) 1143 { 1144 visit(cast(BinAssignExp)e); 1145 } 1146 1147 void visit(ShlAssignExp e) 1148 { 1149 visit(cast(BinAssignExp)e); 1150 } 1151 1152 void visit(ShrAssignExp e) 1153 { 1154 visit(cast(BinAssignExp)e); 1155 } 1156 1157 void visit(UshrAssignExp e) 1158 { 1159 visit(cast(BinAssignExp)e); 1160 } 1161 1162 void visit(CatAssignExp e) 1163 { 1164 visit(cast(BinAssignExp)e); 1165 } 1166 1167 void visit(AddExp e) 1168 { 1169 visit(cast(BinExp)e); 1170 } 1171 1172 void visit(MinExp e) 1173 { 1174 visit(cast(BinExp)e); 1175 } 1176 1177 void visit(CatExp e) 1178 { 1179 visit(cast(BinExp)e); 1180 } 1181 1182 void visit(MulExp e) 1183 { 1184 visit(cast(BinExp)e); 1185 } 1186 1187 void visit(DivExp e) 1188 { 1189 visit(cast(BinExp)e); 1190 } 1191 1192 void visit(ModExp e) 1193 { 1194 visit(cast(BinExp)e); 1195 } 1196 1197 void visit(PowExp e) 1198 { 1199 visit(cast(BinExp)e); 1200 } 1201 1202 void visit(ShlExp e) 1203 { 1204 visit(cast(BinExp)e); 1205 } 1206 1207 void visit(ShrExp e) 1208 { 1209 visit(cast(BinExp)e); 1210 } 1211 1212 void visit(UshrExp e) 1213 { 1214 visit(cast(BinExp)e); 1215 } 1216 1217 void visit(AndExp e) 1218 { 1219 visit(cast(BinExp)e); 1220 } 1221 1222 void visit(OrExp e) 1223 { 1224 visit(cast(BinExp)e); 1225 } 1226 1227 void visit(XorExp e) 1228 { 1229 visit(cast(BinExp)e); 1230 } 1231 1232 void visit(OrOrExp e) 1233 { 1234 visit(cast(BinExp)e); 1235 } 1236 1237 void visit(AndAndExp e) 1238 { 1239 visit(cast(BinExp)e); 1240 } 1241 1242 void visit(CmpExp e) 1243 { 1244 visit(cast(BinExp)e); 1245 } 1246 1247 void visit(InExp e) 1248 { 1249 visit(cast(BinExp)e); 1250 } 1251 1252 void visit(RemoveExp e) 1253 { 1254 visit(cast(BinExp)e); 1255 } 1256 1257 void visit(EqualExp e) 1258 { 1259 visit(cast(BinExp)e); 1260 } 1261 1262 void visit(IdentityExp e) 1263 { 1264 visit(cast(BinExp)e); 1265 } 1266 1267 void visit(CondExp e) 1268 { 1269 visit(cast(BinExp)e); 1270 } 1271 1272 void visit(DefaultInitExp e) 1273 { 1274 visit(cast(Expression)e); 1275 } 1276 1277 void visit(FileInitExp e) 1278 { 1279 visit(cast(DefaultInitExp)e); 1280 } 1281 1282 void visit(LineInitExp e) 1283 { 1284 visit(cast(DefaultInitExp)e); 1285 } 1286 1287 void visit(ModuleInitExp e) 1288 { 1289 visit(cast(DefaultInitExp)e); 1290 } 1291 1292 void visit(FuncInitExp e) 1293 { 1294 visit(cast(DefaultInitExp)e); 1295 } 1296 1297 void visit(PrettyFuncInitExp e) 1298 { 1299 visit(cast(DefaultInitExp)e); 1300 } 1301 1302 void visit(ClassReferenceExp e) 1303 { 1304 visit(cast(Expression)e); 1305 } 1306 1307 void visit(VoidInitExp e) 1308 { 1309 visit(cast(Expression)e); 1310 } 1311 1312 void visit(ThrownExceptionExp e) 1313 { 1314 visit(cast(Expression)e); 1315 } 1316 1317 void visit(TemplateParameter) 1318 { 1319 assert(0); 1320 } 1321 1322 void visit(TemplateTypeParameter tp) 1323 { 1324 visit(cast(TemplateParameter)tp); 1325 } 1326 1327 void visit(TemplateThisParameter tp) 1328 { 1329 visit(cast(TemplateTypeParameter)tp); 1330 } 1331 1332 void visit(TemplateValueParameter tp) 1333 { 1334 visit(cast(TemplateParameter)tp); 1335 } 1336 1337 void visit(TemplateAliasParameter tp) 1338 { 1339 visit(cast(TemplateParameter)tp); 1340 } 1341 1342 void visit(TemplateTupleParameter tp) 1343 { 1344 visit(cast(TemplateParameter)tp); 1345 } 1346 1347 void visit(Condition) 1348 { 1349 assert(0); 1350 } 1351 1352 void visit(DVCondition c) 1353 { 1354 visit(cast(Condition)c); 1355 } 1356 1357 void visit(DebugCondition c) 1358 { 1359 visit(cast(DVCondition)c); 1360 } 1361 1362 void visit(VersionCondition c) 1363 { 1364 visit(cast(DVCondition)c); 1365 } 1366 1367 void visit(StaticIfCondition c) 1368 { 1369 visit(cast(Condition)c); 1370 } 1371 1372 void visit(Parameter) 1373 { 1374 assert(0); 1375 } 1376 } 1377 1378 extern (C++) class StoppableVisitor : Visitor 1379 { 1380 alias visit = super.visit; 1381 public: 1382 bool stop; 1383 1384 final extern (D) this() 1385 { 1386 } 1387 }