diff --git a/analysis/base.d b/analysis/base.d index 46a1986..74fb113 100644 --- a/analysis/base.d +++ b/analysis/base.d @@ -22,7 +22,7 @@ protected: template visitTemplate(T) { - override void visit(T structDec) + override void visit(const T structDec) { inAggregate = true; structDec.accept(this); diff --git a/analysis/del.d b/analysis/del.d index 04aa33f..60df118 100644 --- a/analysis/del.d +++ b/analysis/del.d @@ -21,7 +21,7 @@ class DeleteCheck : BaseAnalyzer super(fileName); } - override void visit(DeleteExpression d) + override void visit(const DeleteExpression d) { addErrorMessage(d.line, d.column, "Avoid using the delete keyword"); d.accept(this); diff --git a/analysis/enumarrayliteral.d b/analysis/enumarrayliteral.d index 55a0696..0eae919 100644 --- a/analysis/enumarrayliteral.d +++ b/analysis/enumarrayliteral.d @@ -27,7 +27,7 @@ class EnumArrayLiteralCheck : BaseAnalyzer mixin visitTemplate!UnionDeclaration; mixin visitTemplate!StructDeclaration; - override void visit(Declaration dec) + override void visit(const Declaration dec) { if (inAggregate) foreach (attr; dec.attributes) { @@ -41,7 +41,7 @@ class EnumArrayLiteralCheck : BaseAnalyzer looking = false; } - override void visit(AutoDeclaration autoDec) + override void visit(const AutoDeclaration autoDec) { if (looking) { diff --git a/analysis/fish.d b/analysis/fish.d index e1790d2..de66d11 100644 --- a/analysis/fish.d +++ b/analysis/fish.d @@ -21,7 +21,7 @@ class FloatOperatorCheck : BaseAnalyzer super(fileName); } - override void visit(RelExpression r) + override void visit(const RelExpression r) { if (r.operator == tok!"<>" || r.operator == tok!"!<>" diff --git a/analysis/numbers.d b/analysis/numbers.d index 32637b7..b3b209c 100644 --- a/analysis/numbers.d +++ b/analysis/numbers.d @@ -22,7 +22,7 @@ class NumberStyleCheck : BaseAnalyzer super(fileName); } - override void visit(Token t) + override void visit(const Token t) { import std.algorithm; if (isNumberLiteral(t.type) && !t.text.startsWith("0x") diff --git a/analysis/objectconst.d b/analysis/objectconst.d index c9ba531..136b3af 100644 --- a/analysis/objectconst.d +++ b/analysis/objectconst.d @@ -27,7 +27,7 @@ class ObjectConstCheck : BaseAnalyzer mixin visitTemplate!UnionDeclaration; mixin visitTemplate!StructDeclaration; - override void visit(Declaration d) + override void visit(const Declaration d) { if (inAggregate && d.functionDeclaration !is null && isInteresting(d.functionDeclaration.name.text) @@ -41,14 +41,14 @@ class ObjectConstCheck : BaseAnalyzer d.accept(this); } - private static bool hasConst(Attribute[] attributes) + private static bool hasConst(const Attribute[] attributes) { import std.algorithm; return attributes.any!(a => a.attribute == tok!"const" || (a.storageClass !is null && a.storageClass.token == tok!"const")); } - private static bool hasConst(MemberFunctionAttribute[] attributes) + private static bool hasConst(const MemberFunctionAttribute[] attributes) { import std.algorithm; return attributes.any!(a => a.tokenType == tok!"const"); diff --git a/analysis/pokemon.d b/analysis/pokemon.d index 1840f8b..bc22530 100644 --- a/analysis/pokemon.d +++ b/analysis/pokemon.d @@ -13,8 +13,11 @@ import analysis.base; * Checks for Pokémon exception handling, i.e. "gotta' catch 'em all". * * --- - * catch (Exception e) - * ... + * try { + * choose(pikachu); + * } catch (Exception e) { + * ... + * } * --- */ class PokemonExceptionCheck : BaseAnalyzer @@ -26,7 +29,7 @@ class PokemonExceptionCheck : BaseAnalyzer super(fileName); } - override void visit(Catch c) + override void visit(const Catch c) { if (c.type.type2.symbol.identifierOrTemplateChain.identifiersOrTemplateInstances.length != 1) { diff --git a/analysis/range.d b/analysis/range.d index de6f857..20a5026 100644 --- a/analysis/range.d +++ b/analysis/range.d @@ -31,7 +31,7 @@ class BackwardsRangeCheck : BaseAnalyzer super(fileName); } - override void visit(ForeachStatement foreachStatement) + override void visit(const ForeachStatement foreachStatement) { if (foreachStatement.low !is null && foreachStatement.high !is null) { @@ -54,7 +54,7 @@ class BackwardsRangeCheck : BaseAnalyzer foreachStatement.accept(this); } - override void visit(UnaryExpression unary) + override void visit(const UnaryExpression unary) { if (state != State.ignore && unary.primaryExpression is null) return; @@ -62,7 +62,7 @@ class BackwardsRangeCheck : BaseAnalyzer unary.accept(this); } - override void visit(PrimaryExpression primary) + override void visit(const PrimaryExpression primary) { import std.conv; import std.string; @@ -82,7 +82,7 @@ class BackwardsRangeCheck : BaseAnalyzer } } - override void visit(SliceExpression sliceExpression) + override void visit(const SliceExpression sliceExpression) { if (sliceExpression.lower !is null && sliceExpression.upper !is null) { diff --git a/analysis/style.d b/analysis/style.d index 007e8db..13f9b53 100644 --- a/analysis/style.d +++ b/analysis/style.d @@ -25,7 +25,7 @@ class StyleChecker : BaseAnalyzer super(fileName); } - override void visit(ModuleDeclaration dec) + override void visit(const ModuleDeclaration dec) { foreach (part; dec.moduleName.identifiers) { @@ -35,36 +35,36 @@ class StyleChecker : BaseAnalyzer } } - override void visit(Declarator dec) + override void visit(const Declarator dec) { checkLowercaseName("Variable", dec.name); } - override void visit(FunctionDeclaration dec) + override void visit(const FunctionDeclaration dec) { checkLowercaseName("Function", dec.name); } - void checkLowercaseName(string type, ref Token name) + void checkLowercaseName(string type, ref const Token name) { if (name.text.matchFirst(varFunNameRegex).length == 0) addErrorMessage(name.line, name.column, type ~ " name " ~ name.text ~ " does not match style guidelines"); } - override void visit(ClassDeclaration dec) + override void visit(const ClassDeclaration dec) { checkAggregateName("Class", dec.name); dec.accept(this); } - override void visit(InterfaceDeclaration dec) + override void visit(const InterfaceDeclaration dec) { checkAggregateName("Interface", dec.name); dec.accept(this); } - override void visit(EnumDeclaration dec) + override void visit(const EnumDeclaration dec) { if (dec.name.text is null || dec.name.text.length == 0) return; @@ -72,7 +72,7 @@ class StyleChecker : BaseAnalyzer dec.accept(this); } - override void visit(StructDeclaration dec) + override void visit(const StructDeclaration dec) { checkAggregateName("Struct", dec.name); dec.accept(this); diff --git a/astprinter.d b/astprinter.d index a31d428..b86b341 100644 --- a/astprinter.d +++ b/astprinter.d @@ -19,7 +19,7 @@ template tagAndAccept(string tagName) class XMLPrinter : ASTVisitor { - override void visit(AddExpression addExpression) + override void visit(const AddExpression addExpression) { output.writeln(""); output.writeln(""); @@ -34,27 +34,27 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(AliasDeclaration aliasDeclaration) + override void visit(const AliasDeclaration aliasDeclaration) { mixin (tagAndAccept!"aliasDeclaration"); } - override void visit(AliasInitializer aliasInitializer) + override void visit(const AliasInitializer aliasInitializer) { mixin (tagAndAccept!"aliasInitializer"); } - override void visit(AliasThisDeclaration aliasThisDeclaration) + override void visit(const AliasThisDeclaration aliasThisDeclaration) { mixin (tagAndAccept!"aliasThisDeclaration"); } - override void visit(AlignAttribute alignAttribute) + override void visit(const AlignAttribute alignAttribute) { output.writeln(""); } - override void visit(AndAndExpression andAndExpression) + override void visit(const AndAndExpression andAndExpression) { output.writeln(""); output.writeln(""); @@ -69,7 +69,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(AndExpression andExpression) + override void visit(const AndExpression andExpression) { output.writeln(""); output.writeln(""); @@ -84,32 +84,32 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(ArgumentList argumentList) + override void visit(const ArgumentList argumentList) { mixin (tagAndAccept!"argumentList"); } - override void visit(Arguments arguments) + override void visit(const Arguments arguments) { mixin (tagAndAccept!"arguments"); } - override void visit(ArrayInitializer arrayInitializer) + override void visit(const ArrayInitializer arrayInitializer) { mixin (tagAndAccept!"arrayInitializer"); } - override void visit(ArrayLiteral arrayLiteral) + override void visit(const ArrayLiteral arrayLiteral) { mixin (tagAndAccept!"arrayLiteral"); } - override void visit(ArrayMemberInitialization arrayMemberInitialization) + override void visit(const ArrayMemberInitialization arrayMemberInitialization) { mixin (tagAndAccept!"arrayMemberInitialization"); } - override void visit(AssertExpression assertExpression) + override void visit(const AssertExpression assertExpression) { output.writeln(""); output.writeln(""); @@ -124,7 +124,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(AssignExpression assignExpression) + override void visit(const AssignExpression assignExpression) { if (assignExpression.assignExpression is null) output.writeln(""); @@ -135,12 +135,12 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(AssocArrayLiteral assocArrayLiteral) + override void visit(const AssocArrayLiteral assocArrayLiteral) { mixin (tagAndAccept!"assocArrayLiteral"); } - override void visit(AtAttribute atAttribute) + override void visit(const AtAttribute atAttribute) { output.writeln(""); if (atAttribute.identifier.type == tok!"") @@ -150,7 +150,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(Attribute attribute) + override void visit(const Attribute attribute) { output.writeln(""); if (attribute.attribute == tok!"") @@ -160,13 +160,13 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(AttributeDeclaration attributeDeclaration) + override void visit(const AttributeDeclaration attributeDeclaration) { assert (attributeDeclaration !is null); mixin (tagAndAccept!"attributeDeclaration"); } - override void visit(AutoDeclaration autoDec) + override void visit(const AutoDeclaration autoDec) { output.writeln(""); for (size_t i = 0; i < autoDec.identifiers.length; i++) @@ -180,21 +180,21 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(BlockStatement blockStatement) + override void visit(const BlockStatement blockStatement) { output.writeln(""); blockStatement.accept(this); output.writeln(""); } - override void visit(BodyStatement bodyStatement) + override void visit(const BodyStatement bodyStatement) { output.writeln(""); bodyStatement.accept(this); output.writeln(""); } - override void visit(BreakStatement breakStatement) + override void visit(const BreakStatement breakStatement) { if (breakStatement.label.type == tok!"") output.writeln(""); @@ -202,17 +202,17 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(BaseClass baseClass) + override void visit(const BaseClass baseClass) { mixin (tagAndAccept!"baseClass"); } - override void visit(BaseClassList baseClassList) + override void visit(const BaseClassList baseClassList) { mixin (tagAndAccept!"baseClassList"); } - override void visit(CaseRangeStatement caseRangeStatement) + override void visit(const CaseRangeStatement caseRangeStatement) { output.writeln(""); if (caseRangeStatement.low !is null) @@ -232,34 +232,34 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(CaseStatement caseStatement) + override void visit(const CaseStatement caseStatement) { mixin (tagAndAccept!"caseStatement"); } - override void visit(CastExpression castExpression) + override void visit(const CastExpression castExpression) { mixin (tagAndAccept!"castExpression"); } - override void visit(CastQualifier castQualifier) + override void visit(const CastQualifier castQualifier) { mixin (tagAndAccept!"castQualifier"); } - override void visit(Catches catches) + override void visit(const Catches catches) { mixin (tagAndAccept!"catches"); } - override void visit(Catch catch_) + override void visit(const Catch catch_) { output.writeln(""); catch_.accept(this); output.writeln(""); } - override void visit(ClassDeclaration classDec) + override void visit(const ClassDeclaration classDec) { output.writeln(""); output.writeln("", classDec.name.text, ""); @@ -268,17 +268,17 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(CmpExpression cmpExpression) + override void visit(const CmpExpression cmpExpression) { mixin (tagAndAccept!"cmpExpression"); } - override void visit(CompileCondition compileCondition) + override void visit(const CompileCondition compileCondition) { mixin (tagAndAccept!"compileCondition"); } - override void visit(ConditionalDeclaration conditionalDeclaration) + override void visit(const ConditionalDeclaration conditionalDeclaration) { output.writeln(""); visit(conditionalDeclaration.compileCondition); @@ -295,7 +295,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(ConditionalStatement conditionalStatement) + override void visit(const ConditionalStatement conditionalStatement) { output.writeln(""); visit(conditionalStatement.compileCondition); @@ -311,19 +311,19 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(Constraint constraint) + override void visit(const Constraint constraint) { output.writeln(""); constraint.accept(this); output.writeln(""); } - override void visit(Constructor constructor) + override void visit(const Constructor constructor) { mixin (tagAndAccept!"constructor"); } - override void visit(ContinueStatement continueStatement) + override void visit(const ContinueStatement continueStatement) { if (continueStatement.label.type == tok!"") output.writeln(""); @@ -332,7 +332,7 @@ class XMLPrinter : ASTVisitor continueStatement.label.text, "\"/>"); } - override void visit(DebugCondition debugCondition) + override void visit(const DebugCondition debugCondition) { if (debugCondition.identifierOrInteger.type == tok!"") output.writeln(""); @@ -341,7 +341,7 @@ class XMLPrinter : ASTVisitor debugCondition.identifierOrInteger.text, "\"/>"); } - override void visit(DebugSpecification debugSpecification) + override void visit(const DebugSpecification debugSpecification) { if (debugSpecification.identifierOrInteger.type == tok!"") output.writeln(""); @@ -350,22 +350,22 @@ class XMLPrinter : ASTVisitor debugSpecification.identifierOrInteger.text, "\"/>"); } - override void visit(Declaration declaration) + override void visit(const Declaration declaration) { mixin (tagAndAccept!"declaration"); } - override void visit(DeclarationsAndStatements declarationsAndStatements) + override void visit(const DeclarationsAndStatements declarationsAndStatements) { mixin (tagAndAccept!"declarationsAndStatements"); } - override void visit(DeclarationOrStatement declarationOrStatement) + override void visit(const DeclarationOrStatement declarationOrStatement) { mixin (tagAndAccept!"declarationOrStatement"); } - override void visit(Declarator declarator) + override void visit(const Declarator declarator) { output.writeln(""); output.writeln("", declarator.name.text, ""); @@ -373,22 +373,22 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(DefaultStatement defaultStatement) + override void visit(const DefaultStatement defaultStatement) { mixin (tagAndAccept!"defaultStatement"); } - override void visit(DeleteExpression deleteExpression) + override void visit(const DeleteExpression deleteExpression) { mixin (tagAndAccept!"deleteExpression"); } - override void visit(DeleteStatement deleteStatement) + override void visit(const DeleteStatement deleteStatement) { mixin (tagAndAccept!"deleteStatement"); } - override void visit(Deprecated deprecated_) + override void visit(const Deprecated deprecated_) { if (deprecated_.assignExpression !is null) { @@ -400,22 +400,22 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(Destructor destructor) + override void visit(const Destructor destructor) { mixin (tagAndAccept!"destructor"); } - override void visit(DoStatement doStatement) + override void visit(const DoStatement doStatement) { mixin (tagAndAccept!"doStatement"); } - override void visit(EnumBody enumBody) + override void visit(const EnumBody enumBody) { mixin (tagAndAccept!"enumBody"); } - override void visit(EnumDeclaration enumDec) + override void visit(const EnumDeclaration enumDec) { output.writeln(""); writeDdoc(enumDec.comment); @@ -425,7 +425,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(EnumMember enumMem) + override void visit(const EnumMember enumMem) { output.writeln(""); writeDdoc(enumMem.comment); @@ -433,7 +433,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(EqualExpression equalExpression) + override void visit(const EqualExpression equalExpression) { output.writeln(""); output.writeln(""); @@ -445,35 +445,35 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(Expression expression) + override void visit(const Expression expression) { output.writeln(""); expression.accept(this); output.writeln(""); } - override void visit(ExpressionStatement expressionStatement) + override void visit(const ExpressionStatement expressionStatement) { output.writeln(""); expressionStatement.accept(this); output.writeln(""); } - override void visit(FinalSwitchStatement finalSwitchStatement) + override void visit(const FinalSwitchStatement finalSwitchStatement) { output.writeln(""); finalSwitchStatement.accept(this); output.writeln(""); } - override void visit(Finally finally_) + override void visit(const Finally finally_) { output.writeln(""); finally_.accept(this); output.writeln(""); } - override void visit(ForStatement forStatement) + override void visit(const ForStatement forStatement) { output.writeln(""); if (forStatement.declarationOrStatement !is null) @@ -498,7 +498,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(ForeachStatement foreachStatement) + override void visit(const ForeachStatement foreachStatement) { output.writeln(""); @@ -519,7 +519,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(ForeachType foreachType) + override void visit(const ForeachType foreachType) { output.writeln(""); foreach (constructor; foreachType.typeConstructors) @@ -533,32 +533,32 @@ class XMLPrinter : ASTVisitor } - override void visit(ForeachTypeList foreachTypeList) + override void visit(const ForeachTypeList foreachTypeList) { mixin (tagAndAccept!"foreachTypeList"); } - override void visit(FunctionAttribute functionAttribute) + override void visit(const FunctionAttribute functionAttribute) { mixin (tagAndAccept!"functionAttribute"); } - override void visit(FunctionBody functionBody) + override void visit(const FunctionBody functionBody) { mixin (tagAndAccept!"functionBody"); } - override void visit(FunctionCallExpression functionCallExpression) + override void visit(const FunctionCallExpression functionCallExpression) { mixin (tagAndAccept!"functionCallExpression"); } - override void visit(FunctionCallStatement functionCallStatement) + override void visit(const FunctionCallStatement functionCallStatement) { mixin (tagAndAccept!"functionCallStatement"); } - override void visit(FunctionDeclaration functionDec) + override void visit(const FunctionDeclaration functionDec) { output.writeln(""); output.writeln("", functionDec.name.text, ""); @@ -571,7 +571,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(FunctionLiteralExpression functionLiteralExpression) + override void visit(const FunctionLiteralExpression functionLiteralExpression) { output.writeln(""); @@ -579,7 +579,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(GotoStatement gotoStatement) + override void visit(const GotoStatement gotoStatement) { if (gotoStatement.label.type == tok!"default") output.writeln(""); @@ -595,27 +595,27 @@ class XMLPrinter : ASTVisitor } } - override void visit(IdentifierChain identifierChain) + override void visit(const IdentifierChain identifierChain) { mixin (tagAndAccept!"identifierChain"); } - override void visit(IdentifierList identifierList) + override void visit(const IdentifierList identifierList) { mixin (tagAndAccept!"identifierList"); } - override void visit(IdentifierOrTemplateChain identifierOrTemplateChain) + override void visit(const IdentifierOrTemplateChain identifierOrTemplateChain) { mixin (tagAndAccept!"identifierOrTemplateChain"); } - override void visit(IdentifierOrTemplateInstance identifierOrTemplateInstance) + override void visit(const IdentifierOrTemplateInstance identifierOrTemplateInstance) { mixin (tagAndAccept!"identifierOrTemplateInstance"); } - override void visit(IdentityExpression identityExpression) + override void visit(const IdentityExpression identityExpression) { if (identityExpression.negated) output.writeln(""); @@ -630,7 +630,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(IfStatement ifStatement) + override void visit(const IfStatement ifStatement) { output.writeln(""); @@ -659,7 +659,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(ImportBind importBind) + override void visit(const ImportBind importBind) { if (importBind.right.type == tok!"") output.writeln(""); @@ -668,27 +668,27 @@ class XMLPrinter : ASTVisitor "\" rename=\"", importBind.left.text, "\">"); } - override void visit(ImportBindings importBindings) + override void visit(const ImportBindings importBindings) { mixin (tagAndAccept!"importBindings"); } - override void visit(ImportDeclaration importDeclaration) + override void visit(const ImportDeclaration importDeclaration) { mixin (tagAndAccept!"importDeclaration"); } - override void visit(ImportExpression importExpression) + override void visit(const ImportExpression importExpression) { mixin (tagAndAccept!"importExpression"); } - override void visit(IndexExpression indexExpression) + override void visit(const IndexExpression indexExpression) { mixin (tagAndAccept!"indexExpression"); } - override void visit(InExpression inExpression) + override void visit(const InExpression inExpression) { if (inExpression.negated) output.writeln(""); @@ -703,12 +703,12 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(InStatement inStatement) + override void visit(const InStatement inStatement) { mixin (tagAndAccept!"inStatement"); } - override void visit(Initialize initialize) + override void visit(const Initialize initialize) { if (initialize.statementNoCaseNoDefault is null) output.writeln(""); @@ -720,7 +720,7 @@ class XMLPrinter : ASTVisitor } } - override void visit(Initializer initializer) + override void visit(const Initializer initializer) { if (initializer.nonVoidInitializer is null) output.writeln(""); @@ -732,7 +732,7 @@ class XMLPrinter : ASTVisitor } } - override void visit(InterfaceDeclaration interfaceDec) + override void visit(const InterfaceDeclaration interfaceDec) { output.writeln(""); output.writeln("", interfaceDec.name.text, ""); @@ -741,7 +741,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(Invariant invariant_) + override void visit(const Invariant invariant_) { output.writeln(""); writeDdoc(invariant_.comment); @@ -749,7 +749,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(IsExpression isExpression) + override void visit(const IsExpression isExpression) { output.writeln(""); visit(isExpression.type); @@ -768,7 +768,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(KeyValuePair keyValuePair) + override void visit(const KeyValuePair keyValuePair) { output.writeln(""); output.writeln(""); @@ -780,12 +780,12 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(KeyValuePairs keyValuePairs) + override void visit(const KeyValuePairs keyValuePairs) { mixin (tagAndAccept!"keyValuePairs"); } - override void visit (LabeledStatement labeledStatement) + override void visit (const LabeledStatement labeledStatement) { output.writeln(""); @@ -793,7 +793,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(LambdaExpression lambdaExpression) + override void visit(const LambdaExpression lambdaExpression) { output.writeln(""); if (lambdaExpression.functionType == tok!"function") @@ -804,12 +804,12 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(LastCatch lastCatch) + override void visit(const LastCatch lastCatch) { mixin (tagAndAccept!"lastCatch"); } - override void visit(LinkageAttribute linkageAttribute) + override void visit(const LinkageAttribute linkageAttribute) { if (linkageAttribute.hasPlusPlus) output.writeln(""); @@ -818,7 +818,7 @@ class XMLPrinter : ASTVisitor linkageAttribute.identifier.text, "\"/>"); } - override void visit(MemberFunctionAttribute memberFunctionAttribute) + override void visit(const MemberFunctionAttribute memberFunctionAttribute) { output.writeln(""); if (memberFunctionAttribute.atAttribute is null) @@ -828,27 +828,27 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(MixinDeclaration mixinDeclaration) + override void visit(const MixinDeclaration mixinDeclaration) { mixin (tagAndAccept!"mixinDeclaration"); } - override void visit(MixinExpression mixinExpression) + override void visit(const MixinExpression mixinExpression) { mixin (tagAndAccept!"mixinExpression"); } - override void visit(MixinTemplateDeclaration mixinTemplateDeclaration) + override void visit(const MixinTemplateDeclaration mixinTemplateDeclaration) { mixin (tagAndAccept!"mixinTemplateDeclaration"); } - override void visit(MixinTemplateName mixinTemplateName) + override void visit(const MixinTemplateName mixinTemplateName) { mixin (tagAndAccept!"mixinTemplateName"); } - override void visit(Module module_) + override void visit(const Module module_) { output.writeln(""); output.writeln(""); @@ -856,12 +856,12 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(ModuleDeclaration moduleDeclaration) + override void visit(const ModuleDeclaration moduleDeclaration) { mixin (tagAndAccept!"moduleDeclaration"); } - override void visit(MulExpression mulExpression) + override void visit(const MulExpression mulExpression) { output.writeln(""); output.writeln(""); @@ -876,42 +876,42 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(NewAnonClassExpression newAnonClassExpression) + override void visit(const NewAnonClassExpression newAnonClassExpression) { mixin (tagAndAccept!"newAnonClassExpression"); } - override void visit(NewExpression newExpression) + override void visit(const NewExpression newExpression) { mixin (tagAndAccept!"newExpression"); } - override void visit(StatementNoCaseNoDefault statementNoCaseNoDefault) + override void visit(const StatementNoCaseNoDefault statementNoCaseNoDefault) { mixin (tagAndAccept!"statementNoCaseNoDefault"); } - override void visit(NonVoidInitializer nonVoidInitializer) + override void visit(const NonVoidInitializer nonVoidInitializer) { mixin (tagAndAccept!"nonVoidInitializer"); } - override void visit(OrExpression orExpression) + override void visit(const OrExpression orExpression) { mixin (tagAndAccept!"orExpression"); } - override void visit(OrOrExpression orOrExpression) + override void visit(const OrOrExpression orOrExpression) { mixin (tagAndAccept!"orOrExpression"); } - override void visit(OutStatement outStatement) + override void visit(const OutStatement outStatement) { mixin (tagAndAccept!"outStatement"); } - override void visit(Parameter param) + override void visit(const Parameter param) { output.writeln(""); if (param.name.type == tok!"identifier") @@ -926,17 +926,17 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(Parameters parameters) + override void visit(const Parameters parameters) { mixin (tagAndAccept!"parameters"); } - override void visit(Postblit postblit) + override void visit(const Postblit postblit) { mixin (tagAndAccept!"postblit"); } - override void visit(PostIncDecExpression postIncDecExpression) + override void visit(const PostIncDecExpression postIncDecExpression) { output.writeln(""); @@ -944,7 +944,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(PowExpression powExpression) + override void visit(const PowExpression powExpression) { output.writeln(""); output.writeln(""); @@ -959,17 +959,17 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(PragmaDeclaration pragmaDeclaration) + override void visit(const PragmaDeclaration pragmaDeclaration) { mixin (tagAndAccept!"pragmaDeclaration"); } - override void visit(PragmaExpression pragmaExpression) + override void visit(const PragmaExpression pragmaExpression) { mixin (tagAndAccept!"pragmaExpression"); } - override void visit(PreIncDecExpression preIncDecExpression) + override void visit(const PreIncDecExpression preIncDecExpression) { output.writeln(""); @@ -977,14 +977,14 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(PrimaryExpression primaryExpression) + override void visit(const PrimaryExpression primaryExpression) { mixin (tagAndAccept!"primaryExpression"); } // TODO: Register - override void visit(RelExpression relExpression) + override void visit(const RelExpression relExpression) { output.writeln(""); @@ -997,7 +997,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(ReturnStatement returnStatement) + override void visit(const ReturnStatement returnStatement) { if (returnStatement.expression is null) output.writeln(""); @@ -1009,22 +1009,22 @@ class XMLPrinter : ASTVisitor } } - override void visit(ScopeGuardStatement scopeGuardStatement) + override void visit(const ScopeGuardStatement scopeGuardStatement) { mixin (tagAndAccept!"scopeGuardStatement"); } - override void visit(SharedStaticConstructor sharedStaticConstructor) + override void visit(const SharedStaticConstructor sharedStaticConstructor) { mixin (tagAndAccept!"sharedStaticConstructor"); } - override void visit(SharedStaticDestructor sharedStaticDestructor) + override void visit(const SharedStaticDestructor sharedStaticDestructor) { mixin (tagAndAccept!"sharedStaticDestructor"); } - override void visit(ShiftExpression shiftExpression) + override void visit(const ShiftExpression shiftExpression) { output.writeln(""); @@ -1037,7 +1037,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(SingleImport singleImport) + override void visit(const SingleImport singleImport) { if (singleImport.rename.type == tok!"") output.writeln(""); @@ -1047,7 +1047,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(SliceExpression sliceExpression) + override void visit(const SliceExpression sliceExpression) { output.writeln(""); visit(sliceExpression.unaryExpression); @@ -1066,47 +1066,47 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(Statement statement) + override void visit(const Statement statement) { mixin (tagAndAccept!"statement"); } - override void visit(StaticAssertDeclaration staticAssertDeclaration) + override void visit(const StaticAssertDeclaration staticAssertDeclaration) { mixin (tagAndAccept!"staticAssertDeclaration"); } - override void visit(StaticAssertStatement staticAssertStatement) + override void visit(const StaticAssertStatement staticAssertStatement) { mixin (tagAndAccept!"staticAssertStatement"); } - override void visit(StaticConstructor staticConstructor) + override void visit(const StaticConstructor staticConstructor) { mixin (tagAndAccept!"staticConstructor"); } - override void visit(StaticDestructor staticDestructor) + override void visit(const StaticDestructor staticDestructor) { mixin (tagAndAccept!"staticDestructor"); } - override void visit(StaticIfCondition staticIfCondition) + override void visit(const StaticIfCondition staticIfCondition) { mixin (tagAndAccept!"staticIfCondition"); } - override void visit(StorageClass storageClass) + override void visit(const StorageClass storageClass) { mixin (tagAndAccept!"storageClass"); } - override void visit(StructBody structBody) + override void visit(const StructBody structBody) { mixin (tagAndAccept!"structBody"); } - override void visit(StructDeclaration structDec) + override void visit(const StructDeclaration structDec) { output.writeln(""); output.writeln("", structDec.name.text, ""); @@ -1115,37 +1115,37 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(StructInitializer structInitializer) + override void visit(const StructInitializer structInitializer) { mixin (tagAndAccept!"structInitializer"); } - override void visit(StructMemberInitializer structMemberInitializer) + override void visit(const StructMemberInitializer structMemberInitializer) { mixin (tagAndAccept!"structMemberInitializer"); } - override void visit(StructMemberInitializers structMemberInitializers) + override void visit(const StructMemberInitializers structMemberInitializers) { mixin (tagAndAccept!"structMemberInitializers"); } - override void visit(SwitchStatement switchStatement) + override void visit(const SwitchStatement switchStatement) { mixin (tagAndAccept!"switchStatement"); } - override void visit(Symbol symbol) + override void visit(const Symbol symbol) { mixin (tagAndAccept!"symbol"); } - override void visit(SynchronizedStatement synchronizedStatement) + override void visit(const SynchronizedStatement synchronizedStatement) { mixin (tagAndAccept!"synchronizedStatement"); } - override void visit(TemplateAliasParameter templateAliasParameter) + override void visit(const TemplateAliasParameter templateAliasParameter) { output.writeln(""); if (templateAliasParameter.type !is null) @@ -1180,27 +1180,27 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(TemplateArgument templateArgument) + override void visit(const TemplateArgument templateArgument) { mixin (tagAndAccept!"templateArgument"); } - override void visit(TemplateArgumentList templateArgumentList) + override void visit(const TemplateArgumentList templateArgumentList) { mixin (tagAndAccept!"templateArgumentList"); } - override void visit(TemplateArguments templateArguments) + override void visit(const TemplateArguments templateArguments) { mixin (tagAndAccept!"templateArguments"); } - override void visit (EponymousTemplateDeclaration eponymousTemplateDeclaration) + override void visit (const EponymousTemplateDeclaration eponymousTemplateDeclaration) { mixin (tagAndAccept!"eponymousTemplateDeclaration"); } - override void visit(TemplateDeclaration templateDeclaration) + override void visit(const TemplateDeclaration templateDeclaration) { if (templateDeclaration.eponymousTemplateDeclaration !is null) { @@ -1223,72 +1223,72 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(TemplateInstance templateInstance) + override void visit(const TemplateInstance templateInstance) { mixin (tagAndAccept!"templateInstance"); } - override void visit(TemplateMixinExpression templateMixinExpression) + override void visit(const TemplateMixinExpression templateMixinExpression) { mixin (tagAndAccept!"templateMixinExpression"); } - override void visit(TemplateParameter templateParameter) + override void visit(const TemplateParameter templateParameter) { mixin (tagAndAccept!"templateParameter"); } - override void visit(TemplateParameterList templateParameterList) + override void visit(const TemplateParameterList templateParameterList) { mixin (tagAndAccept!"templateParameterList"); } - override void visit(TemplateParameters templateParameters) + override void visit(const TemplateParameters templateParameters) { mixin (tagAndAccept!"templateParameters"); } - override void visit(TemplateSingleArgument templateSingleArgument) + override void visit(const TemplateSingleArgument templateSingleArgument) { mixin (tagAndAccept!"templateSingleArgument"); } - override void visit(TemplateThisParameter templateThisParameter) + override void visit(const TemplateThisParameter templateThisParameter) { mixin (tagAndAccept!"templateThisParameter"); } - override void visit(TemplateTupleParameter templateTupleParameter) + override void visit(const TemplateTupleParameter templateTupleParameter) { mixin (tagAndAccept!"templateTupleParameter"); } - override void visit(TemplateTypeParameter templateTypeParameter) + override void visit(const TemplateTypeParameter templateTypeParameter) { mixin (tagAndAccept!"templateTypeParameter"); } - override void visit(TemplateValueParameter templateValueParameter) + override void visit(const TemplateValueParameter templateValueParameter) { mixin (tagAndAccept!"templateValueParameter"); } - override void visit(TemplateValueParameterDefault templateValueParameterDefault) + override void visit(const TemplateValueParameterDefault templateValueParameterDefault) { mixin (tagAndAccept!"templateValueParameterDefault"); } - override void visit(TernaryExpression ternaryExpression) + override void visit(const TernaryExpression ternaryExpression) { mixin (tagAndAccept!"ternaryExpression"); } - override void visit(ThrowStatement throwStatement) + override void visit(const ThrowStatement throwStatement) { mixin (tagAndAccept!"throwStatement"); } - override void visit(Token token) + override void visit(const Token token) { string tagName; switch (token.type) @@ -1315,17 +1315,17 @@ class XMLPrinter : ASTVisitor output.writeln("<", tagName, ">", xmlEscape(token.text), ""); } - override void visit(TraitsExpression traitsExpression) + override void visit(const TraitsExpression traitsExpression) { mixin (tagAndAccept!"traitsExpression"); } - override void visit(TryStatement tryStatement) + override void visit(const TryStatement tryStatement) { mixin (tagAndAccept!"tryStatement"); } - override void visit(Type type) + override void visit(const Type type) { auto app = appender!string(); auto formatter = new Formatter!(typeof(app))(app); @@ -1335,7 +1335,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(Type2 type2) + override void visit(const Type2 type2) { if (type2.builtinType != tok!"") output.writeln("", str(type2.builtinType), ""); @@ -1347,12 +1347,12 @@ class XMLPrinter : ASTVisitor } } - override void visit(TypeSpecialization typeSpecialization) + override void visit(const TypeSpecialization typeSpecialization) { mixin (tagAndAccept!"typeSpecialization"); } - override void visit(TypeSuffix typeSuffix) + override void visit(const TypeSuffix typeSuffix) { if (typeSuffix.star) output.writeln(""); @@ -1397,17 +1397,17 @@ class XMLPrinter : ASTVisitor } } - override void visit(TypeidExpression typeidExpression) + override void visit(const TypeidExpression typeidExpression) { mixin (tagAndAccept!"typeidExpression"); } - override void visit(TypeofExpression typeofExpression) + override void visit(const TypeofExpression typeofExpression) { mixin (tagAndAccept!"typeofExpression"); } - override void visit(UnaryExpression unaryExpression) + override void visit(const UnaryExpression unaryExpression) { output.writeln(""); if (unaryExpression.prefix != tok!"") @@ -1427,7 +1427,7 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(UnionDeclaration unionDeclaration) + override void visit(const UnionDeclaration unionDeclaration) { output.writeln(""); if (unionDeclaration.name != tok!"") @@ -1441,14 +1441,14 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(Unittest unittest_) + override void visit(const Unittest unittest_) { output.writeln(""); unittest_.accept(this); output.writeln(""); } - override void visit(VariableDeclaration variableDeclaration) + override void visit(const VariableDeclaration variableDeclaration) { output.writeln(""); writeDdoc(variableDeclaration.comment); @@ -1456,32 +1456,32 @@ class XMLPrinter : ASTVisitor output.writeln(""); } - override void visit(Vector vector) + override void visit(const Vector vector) { mixin (tagAndAccept!"vector"); } - override void visit(VersionCondition versionCondition) + override void visit(const VersionCondition versionCondition) { mixin (tagAndAccept!"versionCondition"); } - override void visit(VersionSpecification versionSpecification) + override void visit(const VersionSpecification versionSpecification) { mixin (tagAndAccept!"versionSpecification"); } - override void visit(WhileStatement whileStatement) + override void visit(const WhileStatement whileStatement) { mixin (tagAndAccept!"whileStatement"); } - override void visit(WithStatement withStatement) + override void visit(const WithStatement withStatement) { mixin (tagAndAccept!"withStatement"); } - override void visit(XorExpression xorExpression) + override void visit(const XorExpression xorExpression) { output.writeln(""); output.writeln(""); diff --git a/ctags.d b/ctags.d index 2899d2a..a679b4d 100644 --- a/ctags.d +++ b/ctags.d @@ -27,7 +27,7 @@ void printCtags(File output, string[] fileNames) auto bytes = uninitializedArray!(ubyte[])(to!size_t(f.size)); f.rawRead(bytes); auto tokens = byToken(bytes, config, cache); - Module m = parseModule(tokens.array, fileName, &doNothing); + Module m = parseModule(tokens.array, fileName, null, &doNothing); auto printer = new CTagsPrinter; printer.fileName = fileName; printer.visit(m); @@ -42,7 +42,7 @@ void printCtags(File output, string[] fileNames) class CTagsPrinter : ASTVisitor { - override void visit(ClassDeclaration dec) + override void visit(const ClassDeclaration dec) { tagLines ~= "%s\t%s\t%d;\"\tc%s\n".format(dec.name.text, fileName, dec.name.line, context); auto c = context; @@ -51,7 +51,7 @@ class CTagsPrinter : ASTVisitor context = c; } - override void visit(StructDeclaration dec) + override void visit(const StructDeclaration dec) { tagLines ~= "%s\t%s\t%d;\"\ts%s\n".format(dec.name.text, fileName, dec.name.line, context); auto c = context; @@ -60,7 +60,7 @@ class CTagsPrinter : ASTVisitor context = c; } - override void visit(InterfaceDeclaration dec) + override void visit(const InterfaceDeclaration dec) { tagLines ~= "%s\t%s\t%d;\"\ti%s\n".format(dec.name.text, fileName, dec.name.line, context); auto c = context; @@ -69,7 +69,7 @@ class CTagsPrinter : ASTVisitor context = c; } - override void visit(TemplateDeclaration dec) + override void visit(const TemplateDeclaration dec) { tagLines ~= "%s\t%s\t%d;\"\tT%s\n".format(dec.name.text, fileName, dec.name.line, context); auto c = context; @@ -78,7 +78,7 @@ class CTagsPrinter : ASTVisitor context = c; } - override void visit(FunctionDeclaration dec) + override void visit(const FunctionDeclaration dec) { tagLines ~= "%s\t%s\t%d;\"\tf\tarity:%d%s\n".format(dec.name.text, fileName, dec.name.line, dec.parameters.parameters.length, context); @@ -88,7 +88,7 @@ class CTagsPrinter : ASTVisitor context = c; } - override void visit(EnumDeclaration dec) + override void visit(const EnumDeclaration dec) { if (dec.name == tok!"") { @@ -103,7 +103,7 @@ class CTagsPrinter : ASTVisitor context = c; } - override void visit(UnionDeclaration dec) + override void visit(const UnionDeclaration dec) { if (dec.name == tok!"") { @@ -118,13 +118,13 @@ class CTagsPrinter : ASTVisitor context = c; } - override void visit(EnumMember mem) + override void visit(const EnumMember mem) { tagLines ~= "%s\t%s\t%d;\"\te%s\n".format(mem.name.text, fileName, mem.name.line, context); } - override void visit(VariableDeclaration dec) + override void visit(const VariableDeclaration dec) { foreach (d; dec.declarators) { diff --git a/imports.d b/imports.d index fed4460..bc13d66 100644 --- a/imports.d +++ b/imports.d @@ -10,7 +10,7 @@ import std.stdio; class ImportPrinter : ASTVisitor { - override void visit(SingleImport singleImport) + override void visit(const SingleImport singleImport) { ignore = false; singleImport.accept(this); @@ -18,7 +18,7 @@ class ImportPrinter : ASTVisitor ignore = true; } - override void visit(IdentifierChain identifierChain) + override void visit(const IdentifierChain identifierChain) { if (ignore) return; bool first = true; diff --git a/outliner.d b/outliner.d index dab24ec..0acbb6d 100644 --- a/outliner.d +++ b/outliner.d @@ -18,7 +18,7 @@ class Outliner : ASTVisitor this.output = output; } - override void visit(ClassDeclaration classDec) + override void visit(const ClassDeclaration classDec) { printIndentation(); output.writeln("class ", classDec.name.text, " : ", classDec.name.line); @@ -28,7 +28,7 @@ class Outliner : ASTVisitor finish(); } - override void visit(EnumDeclaration enumDec) + override void visit(const EnumDeclaration enumDec) { printIndentation(); output.writeln("enum ", enumDec.name.text, " : ", enumDec.name.line); @@ -38,14 +38,14 @@ class Outliner : ASTVisitor finish(); } - override void visit(EnumMember enumMem) + override void visit(const EnumMember enumMem) { printIndentation(); output.writeln(enumMem.name.text, " : ", enumMem.name.line); finish(); } - override void visit(FunctionDeclaration functionDec) + override void visit(const FunctionDeclaration functionDec) { printIndentation(); if (functionDec.hasAuto) @@ -65,7 +65,7 @@ class Outliner : ASTVisitor finish(); } - override void visit(InterfaceDeclaration interfaceDec) + override void visit(const InterfaceDeclaration interfaceDec) { printIndentation(); output.writeln("interface ", interfaceDec.name.text, " : ", @@ -76,7 +76,7 @@ class Outliner : ASTVisitor finish(); } - override void visit(StructDeclaration structDec) + override void visit(const StructDeclaration structDec) { printIndentation(); output.writeln("struct ", structDec.name.text, " : ", @@ -87,7 +87,7 @@ class Outliner : ASTVisitor finish(); } - override void visit(TemplateDeclaration templateDeclaration) + override void visit(const TemplateDeclaration templateDeclaration) { printIndentation(); output.writeln("template ", templateDeclaration.name.text, " : ", @@ -98,14 +98,14 @@ class Outliner : ASTVisitor finish(); } - override void visit(StaticConstructor s) {} - override void visit(StaticDestructor s) {} - override void visit(SharedStaticConstructor s) {} - override void visit(SharedStaticDestructor s) {} - override void visit(Constructor c) {} - override void visit(Unittest u) {} + override void visit(const StaticConstructor s) {} + override void visit(const StaticDestructor s) {} + override void visit(const SharedStaticConstructor s) {} + override void visit(const SharedStaticDestructor s) {} + override void visit(const Constructor c) {} + override void visit(const Unittest u) {} - override void visit(UnionDeclaration unionDeclaration) + override void visit(const UnionDeclaration unionDeclaration) { printIndentation(); output.writeln("union ", unionDeclaration.name.text, " : ", @@ -116,9 +116,9 @@ class Outliner : ASTVisitor finish(); } - override void visit(VariableDeclaration variableDeclaration) + override void visit(const VariableDeclaration variableDeclaration) { - foreach (Declarator d; variableDeclaration.declarators) + foreach (const Declarator d; variableDeclaration.declarators) { printIndentation(); auto app = appender!(char[])(); diff --git a/stdx/d/ast.d b/stdx/d/ast.d index 14160fe..db4920f 100644 --- a/stdx/d/ast.d +++ b/stdx/d/ast.d @@ -32,7 +32,7 @@ abstract class ASTVisitor { public: - void visit(ExpressionNode n) + void visit(const ExpressionNode n) { if (cast(AddExpression) n) visit(cast(AddExpression) n); else if (cast(AndAndExpression) n) visit(cast(AndAndExpression) n); @@ -83,213 +83,213 @@ public: else if (cast(XorExpression) n) visit(cast(XorExpression) n); } - /** */ void visit(AddExpression addExpression) { addExpression.accept(this); } - /** */ void visit(AliasDeclaration aliasDeclaration) { aliasDeclaration.accept(this); } - /** */ void visit(AliasInitializer aliasInitializer) { aliasInitializer.accept(this); } - /** */ void visit(AliasThisDeclaration aliasThisDeclaration) { aliasThisDeclaration.accept(this); } - /** */ void visit(AlignAttribute alignAttribute) { alignAttribute.accept(this); } - /** */ void visit(AndAndExpression andAndExpression) { andAndExpression.accept(this); } - /** */ void visit(AndExpression andExpression) { andExpression.accept(this); } - /** */ void visit(ArgumentList argumentList) { argumentList.accept(this); } - /** */ void visit(Arguments arguments) { arguments.accept(this); } - /** */ void visit(ArrayInitializer arrayInitializer) { arrayInitializer.accept(this); } - /** */ void visit(ArrayLiteral arrayLiteral) { arrayLiteral.accept(this); } - /** */ void visit(ArrayMemberInitialization arrayMemberInitialization) { arrayMemberInitialization.accept(this); } - /** */ void visit(AsmAddExp asmAddExp) { asmAddExp.accept(this); } - /** */ void visit(AsmAndExp asmAndExp) { asmAndExp.accept(this); } - /** */ void visit(AsmBrExp asmBrExp) { asmBrExp.accept(this); } - /** */ void visit(AsmEqualExp asmEqualExp) { asmEqualExp.accept(this); } - /** */ void visit(AsmExp asmExp) { asmExp.accept(this); } - /** */ void visit(AsmInstruction asmInstruction) { asmInstruction.accept(this); } - /** */ void visit(AsmLogAndExp asmLogAndExp) { asmLogAndExp.accept(this); } - /** */ void visit(AsmLogOrExp asmLogOrExp) { asmLogOrExp.accept(this); } - /** */ void visit(AsmMulExp asmMulExp) { asmMulExp.accept(this); } - /** */ void visit(AsmOrExp asmOrExp) { asmOrExp.accept(this); } - /** */ void visit(AsmPrimaryExp asmPrimaryExp) { asmPrimaryExp.accept(this); } - /** */ void visit(AsmRelExp asmRelExp) { asmRelExp.accept(this); } - /** */ void visit(AsmShiftExp asmShiftExp) { asmShiftExp.accept(this); } - /** */ void visit(AsmStatement asmStatement) { asmStatement.accept(this); } - /** */ void visit(AsmTypePrefix asmTypePrefix) { asmTypePrefix.accept(this); } - /** */ void visit(AsmUnaExp asmUnaExp) { asmUnaExp.accept(this); } - /** */ void visit(AsmXorExp asmXorExp) { asmXorExp.accept(this); } - /** */ void visit(AssertExpression assertExpression) { assertExpression.accept(this); } - /** */ void visit(AssignExpression assignExpression) { assignExpression.accept(this); } - /** */ void visit(AssocArrayLiteral assocArrayLiteral) { assocArrayLiteral.accept(this); } - /** */ void visit(AtAttribute atAttribute) { atAttribute.accept(this); } - /** */ void visit(Attribute attribute) { attribute.accept(this); } - /** */ void visit(AttributeDeclaration attributeDeclaration) { attributeDeclaration.accept(this); } - /** */ void visit(AutoDeclaration autoDeclaration) { autoDeclaration.accept(this); } - /** */ void visit(BlockStatement blockStatement) { blockStatement.accept(this); } - /** */ void visit(BodyStatement bodyStatement) { bodyStatement.accept(this); } - /** */ void visit(BreakStatement breakStatement) { breakStatement.accept(this); } - /** */ void visit(BaseClass baseClass) { baseClass.accept(this); } - /** */ void visit(BaseClassList baseClassList) { baseClassList.accept(this); } - /** */ void visit(CaseRangeStatement caseRangeStatement) { caseRangeStatement.accept(this); } - /** */ void visit(CaseStatement caseStatement) { caseStatement.accept(this); } - /** */ void visit(CastExpression castExpression) { castExpression.accept(this); } - /** */ void visit(CastQualifier castQualifier) { castQualifier.accept(this); } - /** */ void visit(Catch catch_) { catch_.accept(this); } - /** */ void visit(Catches catches) { catches.accept(this); } - /** */ void visit(ClassDeclaration classDeclaration) { classDeclaration.accept(this); } - /** */ void visit(CmpExpression cmpExpression) { cmpExpression.accept(this); } - /** */ void visit(CompileCondition compileCondition) { compileCondition.accept(this); } - /** */ void visit(ConditionalDeclaration conditionalDeclaration) { conditionalDeclaration.accept(this); } - /** */ void visit(ConditionalStatement conditionalStatement) { conditionalStatement.accept(this); } - /** */ void visit(Constraint constraint) { constraint.accept(this); } - /** */ void visit(Constructor constructor) { constructor.accept(this); } - /** */ void visit(ContinueStatement continueStatement) { continueStatement.accept(this); } - /** */ void visit(DebugCondition debugCondition) { debugCondition.accept(this); } - /** */ void visit(DebugSpecification debugSpecification) { debugSpecification.accept(this); } - /** */ void visit(Declaration declaration) { declaration.accept(this); } - /** */ void visit(DeclarationOrStatement declarationsOrStatement) { declarationsOrStatement.accept(this); } - /** */ void visit(DeclarationsAndStatements declarationsAndStatements) { declarationsAndStatements.accept(this); } - /** */ void visit(Declarator declarator) { declarator.accept(this); } - /** */ void visit(DefaultStatement defaultStatement) { defaultStatement.accept(this); } - /** */ void visit(DeleteExpression deleteExpression) { deleteExpression.accept(this); } - /** */ void visit(DeleteStatement deleteStatement) { deleteStatement.accept(this); } - /** */ void visit(Deprecated deprecated_) { deprecated_.accept(this); } - /** */ void visit(Destructor destructor) { destructor.accept(this); } - /** */ void visit(DoStatement doStatement) { doStatement.accept(this); } - /** */ void visit(EnumBody enumBody) { enumBody.accept(this); } - /** */ void visit(EnumDeclaration enumDeclaration) { enumDeclaration.accept(this); } - /** */ void visit(EnumMember enumMember) { enumMember.accept(this); } - /** */ void visit(EponymousTemplateDeclaration eponymousTemplateDeclaration) { eponymousTemplateDeclaration.accept(this); } - /** */ void visit(EqualExpression equalExpression) { equalExpression.accept(this); } - /** */ void visit(Expression expression) { expression.accept(this); } - /** */ void visit(ExpressionStatement expressionStatement) { expressionStatement.accept(this); } - /** */ void visit(FinalSwitchStatement finalSwitchStatement) { finalSwitchStatement.accept(this); } - /** */ void visit(Finally finally_) { finally_.accept(this); } - /** */ void visit(ForStatement forStatement) { forStatement.accept(this); } - /** */ void visit(ForeachStatement foreachStatement) { foreachStatement.accept(this); } - /** */ void visit(ForeachType foreachType) { foreachType.accept(this); } - /** */ void visit(ForeachTypeList foreachTypeList) { foreachTypeList.accept(this); } - /** */ void visit(FunctionAttribute functionAttribute) { functionAttribute.accept(this); } - /** */ void visit(FunctionBody functionBody) { functionBody.accept(this); } - /** */ void visit(FunctionCallExpression functionCallExpression) { functionCallExpression.accept(this); } - /** */ void visit(FunctionCallStatement functionCallStatement) { functionCallStatement.accept(this); } - /** */ void visit(FunctionDeclaration functionDeclaration) { functionDeclaration.accept(this); } - /** */ void visit(FunctionLiteralExpression functionLiteralExpression) { functionLiteralExpression.accept(this); } - /** */ void visit(GotoStatement gotoStatement) { gotoStatement.accept(this); } - /** */ void visit(IdentifierChain identifierChain) { identifierChain.accept(this); } - /** */ void visit(IdentifierList identifierList) { identifierList.accept(this); } - /** */ void visit(IdentifierOrTemplateChain identifierOrTemplateChain) { identifierOrTemplateChain.accept(this); } - /** */ void visit(IdentifierOrTemplateInstance identifierOrTemplateInstance) { identifierOrTemplateInstance.accept(this); } - /** */ void visit(IdentityExpression identityExpression) { identityExpression.accept(this); } - /** */ void visit(IfStatement ifStatement) { ifStatement.accept(this); } - /** */ void visit(ImportBind importBind) { importBind.accept(this); } - /** */ void visit(ImportBindings importBindings) { importBindings.accept(this); } - /** */ void visit(ImportDeclaration importDeclaration) { importDeclaration.accept(this); } - /** */ void visit(ImportExpression importExpression) { importExpression.accept(this); } - /** */ void visit(IndexExpression indexExpression) { indexExpression.accept(this); } - /** */ void visit(InExpression inExpression) { inExpression.accept(this); } - /** */ void visit(InStatement inStatement) { inStatement.accept(this); } - /** */ void visit(Initialize initialize) { initialize.accept(this); } - /** */ void visit(Initializer initializer) { initializer.accept(this); } - /** */ void visit(InterfaceDeclaration interfaceDeclaration) { interfaceDeclaration.accept(this); } - /** */ void visit(Invariant invariant_) { invariant_.accept(this); } - /** */ void visit(IsExpression isExpression) { isExpression.accept(this); } - /** */ void visit(KeyValuePair keyValuePair) { keyValuePair.accept(this); } - /** */ void visit(KeyValuePairs keyValuePairs) { keyValuePairs.accept(this); } - /** */ void visit(LabeledStatement labeledStatement) { labeledStatement.accept(this); } - /** */ void visit(LambdaExpression lambdaExpression) { lambdaExpression.accept(this); } - /** */ void visit(LastCatch lastCatch) { lastCatch.accept(this); } - /** */ void visit(LinkageAttribute linkageAttribute) { linkageAttribute.accept(this); } - /** */ void visit(MemberFunctionAttribute memberFunctionAttribute) { memberFunctionAttribute.accept(this); } - /** */ void visit(MixinDeclaration mixinDeclaration) { mixinDeclaration.accept(this); } - /** */ void visit(MixinExpression mixinExpression) { mixinExpression.accept(this); } - /** */ void visit(MixinTemplateDeclaration mixinTemplateDeclaration) { mixinTemplateDeclaration.accept(this); } - /** */ void visit(MixinTemplateName mixinTemplateName) { mixinTemplateName.accept(this); } - /** */ void visit(Module module_) { module_.accept(this); } - /** */ void visit(ModuleDeclaration moduleDeclaration) { moduleDeclaration.accept(this); } - /** */ void visit(MulExpression mulExpression) { mulExpression.accept(this); } - /** */ void visit(NewAnonClassExpression newAnonClassExpression) { newAnonClassExpression.accept(this); } - /** */ void visit(NewExpression newExpression) { newExpression.accept(this); } - /** */ void visit(NonVoidInitializer nonVoidInitializer) { nonVoidInitializer.accept(this); } - /** */ void visit(Operand operand) { operand.accept(this); } - /** */ void visit(Operands operands) { operands.accept(this); } - /** */ void visit(OrExpression orExpression) { orExpression.accept(this); } - /** */ void visit(OrOrExpression orOrExpression) { orOrExpression.accept(this); } - /** */ void visit(OutStatement outStatement) { outStatement.accept(this); } - /** */ void visit(Parameter parameter) { parameter.accept(this); } - /** */ void visit(Parameters parameters) { parameters.accept(this); } - /** */ void visit(Postblit postblit) { postblit.accept(this); } - /** */ void visit(PostIncDecExpression postIncDecExpression) { postIncDecExpression.accept(this); } - /** */ void visit(PowExpression powExpression) { powExpression.accept(this); } - /** */ void visit(PragmaDeclaration pragmaDeclaration) { pragmaDeclaration.accept(this); } - /** */ void visit(PragmaExpression pragmaExpression) { pragmaExpression.accept(this); } - /** */ void visit(PreIncDecExpression preIncDecExpression) { preIncDecExpression.accept(this); } - /** */ void visit(PrimaryExpression primaryExpression) { primaryExpression.accept(this); } - /** */ void visit(Register register) { register.accept(this); } - /** */ void visit(RelExpression relExpression) { relExpression.accept(this); } - /** */ void visit(ReturnStatement returnStatement) { returnStatement.accept(this); } - /** */ void visit(ScopeGuardStatement scopeGuardStatement) { scopeGuardStatement.accept(this); } - /** */ void visit(SharedStaticConstructor sharedStaticConstructor) { sharedStaticConstructor.accept(this); } - /** */ void visit(SharedStaticDestructor sharedStaticDestructor) { sharedStaticDestructor.accept(this); } - /** */ void visit(ShiftExpression shiftExpression) { shiftExpression.accept(this); } - /** */ void visit(SingleImport singleImport) { singleImport.accept(this); } - /** */ void visit(SliceExpression sliceExpression) { sliceExpression.accept(this); } - /** */ void visit(Statement statement) { statement.accept(this); } - /** */ void visit(StatementNoCaseNoDefault statementNoCaseNoDefault) { statementNoCaseNoDefault.accept(this); } - /** */ void visit(StaticAssertDeclaration staticAssertDeclaration) { staticAssertDeclaration.accept(this); } - /** */ void visit(StaticAssertStatement staticAssertStatement) { staticAssertStatement.accept(this); } - /** */ void visit(StaticConstructor staticConstructor) { staticConstructor.accept(this); } - /** */ void visit(StaticDestructor staticDestructor) { staticDestructor.accept(this); } - /** */ void visit(StaticIfCondition staticIfCondition) { staticIfCondition.accept(this); } - /** */ void visit(StorageClass storageClass) { storageClass.accept(this); } - /** */ void visit(StructBody structBody) { structBody.accept(this); } - /** */ void visit(StructDeclaration structDeclaration) { structDeclaration.accept(this); } - /** */ void visit(StructInitializer structInitializer) { structInitializer.accept(this); } - /** */ void visit(StructMemberInitializer structMemberInitializer) { structMemberInitializer.accept(this); } - /** */ void visit(StructMemberInitializers structMemberInitializers) { structMemberInitializers.accept(this); } - /** */ void visit(SwitchStatement switchStatement) { switchStatement.accept(this); } - /** */ void visit(Symbol symbol) { symbol.accept(this); } - /** */ void visit(SynchronizedStatement synchronizedStatement) { synchronizedStatement.accept(this); } - /** */ void visit(TemplateAliasParameter templateAliasParameter) { templateAliasParameter.accept(this); } - /** */ void visit(TemplateArgument templateArgument) { templateArgument.accept(this); } - /** */ void visit(TemplateArgumentList templateArgumentList) { templateArgumentList.accept(this); } - /** */ void visit(TemplateArguments templateArguments) { templateArguments.accept(this); } - /** */ void visit(TemplateDeclaration templateDeclaration) { templateDeclaration.accept(this); } - /** */ void visit(TemplateInstance templateInstance) { templateInstance.accept(this); } - /** */ void visit(TemplateMixinExpression templateMixinExpression) { templateMixinExpression.accept(this); } - /** */ void visit(TemplateParameter templateParameter) { templateParameter.accept(this); } - /** */ void visit(TemplateParameterList templateParameterList) { templateParameterList.accept(this); } - /** */ void visit(TemplateParameters templateParameters) { templateParameters.accept(this); } - /** */ void visit(TemplateSingleArgument templateSingleArgument) { templateSingleArgument.accept(this); } - /** */ void visit(TemplateThisParameter templateThisParameter) { templateThisParameter.accept(this); } - /** */ void visit(TemplateTupleParameter templateTupleParameter) { templateTupleParameter.accept(this); } - /** */ void visit(TemplateTypeParameter templateTypeParameter) { templateTypeParameter.accept(this); } - /** */ void visit(TemplateValueParameter templateValueParameter) { templateValueParameter.accept(this); } - /** */ void visit(TemplateValueParameterDefault templateValueParameterDefault) { templateValueParameterDefault.accept(this); } - /** */ void visit(TernaryExpression ternaryExpression) { ternaryExpression.accept(this); } - /** */ void visit(ThrowStatement throwStatement) { throwStatement.accept(this); } - /** */ void visit(Token token) { } - /** */ void visit(TraitsExpression traitsExpression) { traitsExpression.accept(this); } - /** */ void visit(TryStatement tryStatement) { tryStatement.accept(this); } - /** */ void visit(Type type) { type.accept(this); } - /** */ void visit(Type2 type2) { type2.accept(this); } - /** */ void visit(TypeSpecialization typeSpecialization) { typeSpecialization.accept(this); } - /** */ void visit(TypeSuffix typeSuffix) { typeSuffix.accept(this); } - /** */ void visit(TypeidExpression typeidExpression) { typeidExpression.accept(this); } - /** */ void visit(TypeofExpression typeofExpression) { typeofExpression.accept(this); } - /** */ void visit(UnaryExpression unaryExpression) { unaryExpression.accept(this); } - /** */ void visit(UnionDeclaration unionDeclaration) { unionDeclaration.accept(this); } - /** */ void visit(Unittest unittest_) { unittest_.accept(this); } - /** */ void visit(VariableDeclaration variableDeclaration) { variableDeclaration.accept(this); } - /** */ void visit(Vector vector) { vector.accept(this); } - /** */ void visit(VersionCondition versionCondition) { versionCondition.accept(this); } - /** */ void visit(VersionSpecification versionSpecification) { versionSpecification.accept(this); } - /** */ void visit(WhileStatement whileStatement) { whileStatement.accept(this); } - /** */ void visit(WithStatement withStatement) { withStatement.accept(this); } - /** */ void visit(XorExpression xorExpression) { xorExpression.accept(this); } + /** */ void visit(const AddExpression addExpression) { addExpression.accept(this); } + /** */ void visit(const AliasDeclaration aliasDeclaration) { aliasDeclaration.accept(this); } + /** */ void visit(const AliasInitializer aliasInitializer) { aliasInitializer.accept(this); } + /** */ void visit(const AliasThisDeclaration aliasThisDeclaration) { aliasThisDeclaration.accept(this); } + /** */ void visit(const AlignAttribute alignAttribute) { alignAttribute.accept(this); } + /** */ void visit(const AndAndExpression andAndExpression) { andAndExpression.accept(this); } + /** */ void visit(const AndExpression andExpression) { andExpression.accept(this); } + /** */ void visit(const ArgumentList argumentList) { argumentList.accept(this); } + /** */ void visit(const Arguments arguments) { arguments.accept(this); } + /** */ void visit(const ArrayInitializer arrayInitializer) { arrayInitializer.accept(this); } + /** */ void visit(const ArrayLiteral arrayLiteral) { arrayLiteral.accept(this); } + /** */ void visit(const ArrayMemberInitialization arrayMemberInitialization) { arrayMemberInitialization.accept(this); } + /** */ void visit(const AsmAddExp asmAddExp) { asmAddExp.accept(this); } + /** */ void visit(const AsmAndExp asmAndExp) { asmAndExp.accept(this); } + /** */ void visit(const AsmBrExp asmBrExp) { asmBrExp.accept(this); } + /** */ void visit(const AsmEqualExp asmEqualExp) { asmEqualExp.accept(this); } + /** */ void visit(const AsmExp asmExp) { asmExp.accept(this); } + /** */ void visit(const AsmInstruction asmInstruction) { asmInstruction.accept(this); } + /** */ void visit(const AsmLogAndExp asmLogAndExp) { asmLogAndExp.accept(this); } + /** */ void visit(const AsmLogOrExp asmLogOrExp) { asmLogOrExp.accept(this); } + /** */ void visit(const AsmMulExp asmMulExp) { asmMulExp.accept(this); } + /** */ void visit(const AsmOrExp asmOrExp) { asmOrExp.accept(this); } + /** */ void visit(const AsmPrimaryExp asmPrimaryExp) { asmPrimaryExp.accept(this); } + /** */ void visit(const AsmRelExp asmRelExp) { asmRelExp.accept(this); } + /** */ void visit(const AsmShiftExp asmShiftExp) { asmShiftExp.accept(this); } + /** */ void visit(const AsmStatement asmStatement) { asmStatement.accept(this); } + /** */ void visit(const AsmTypePrefix asmTypePrefix) { asmTypePrefix.accept(this); } + /** */ void visit(const AsmUnaExp asmUnaExp) { asmUnaExp.accept(this); } + /** */ void visit(const AsmXorExp asmXorExp) { asmXorExp.accept(this); } + /** */ void visit(const AssertExpression assertExpression) { assertExpression.accept(this); } + /** */ void visit(const AssignExpression assignExpression) { assignExpression.accept(this); } + /** */ void visit(const AssocArrayLiteral assocArrayLiteral) { assocArrayLiteral.accept(this); } + /** */ void visit(const AtAttribute atAttribute) { atAttribute.accept(this); } + /** */ void visit(const Attribute attribute) { attribute.accept(this); } + /** */ void visit(const AttributeDeclaration attributeDeclaration) { attributeDeclaration.accept(this); } + /** */ void visit(const AutoDeclaration autoDeclaration) { autoDeclaration.accept(this); } + /** */ void visit(const BlockStatement blockStatement) { blockStatement.accept(this); } + /** */ void visit(const BodyStatement bodyStatement) { bodyStatement.accept(this); } + /** */ void visit(const BreakStatement breakStatement) { breakStatement.accept(this); } + /** */ void visit(const BaseClass baseClass) { baseClass.accept(this); } + /** */ void visit(const BaseClassList baseClassList) { baseClassList.accept(this); } + /** */ void visit(const CaseRangeStatement caseRangeStatement) { caseRangeStatement.accept(this); } + /** */ void visit(const CaseStatement caseStatement) { caseStatement.accept(this); } + /** */ void visit(const CastExpression castExpression) { castExpression.accept(this); } + /** */ void visit(const CastQualifier castQualifier) { castQualifier.accept(this); } + /** */ void visit(const Catch catch_) { catch_.accept(this); } + /** */ void visit(const Catches catches) { catches.accept(this); } + /** */ void visit(const ClassDeclaration classDeclaration) { classDeclaration.accept(this); } + /** */ void visit(const CmpExpression cmpExpression) { cmpExpression.accept(this); } + /** */ void visit(const CompileCondition compileCondition) { compileCondition.accept(this); } + /** */ void visit(const ConditionalDeclaration conditionalDeclaration) { conditionalDeclaration.accept(this); } + /** */ void visit(const ConditionalStatement conditionalStatement) { conditionalStatement.accept(this); } + /** */ void visit(const Constraint constraint) { constraint.accept(this); } + /** */ void visit(const Constructor constructor) { constructor.accept(this); } + /** */ void visit(const ContinueStatement continueStatement) { continueStatement.accept(this); } + /** */ void visit(const DebugCondition debugCondition) { debugCondition.accept(this); } + /** */ void visit(const DebugSpecification debugSpecification) { debugSpecification.accept(this); } + /** */ void visit(const Declaration declaration) { declaration.accept(this); } + /** */ void visit(const DeclarationOrStatement declarationsOrStatement) { declarationsOrStatement.accept(this); } + /** */ void visit(const DeclarationsAndStatements declarationsAndStatements) { declarationsAndStatements.accept(this); } + /** */ void visit(const Declarator declarator) { declarator.accept(this); } + /** */ void visit(const DefaultStatement defaultStatement) { defaultStatement.accept(this); } + /** */ void visit(const DeleteExpression deleteExpression) { deleteExpression.accept(this); } + /** */ void visit(const DeleteStatement deleteStatement) { deleteStatement.accept(this); } + /** */ void visit(const Deprecated deprecated_) { deprecated_.accept(this); } + /** */ void visit(const Destructor destructor) { destructor.accept(this); } + /** */ void visit(const DoStatement doStatement) { doStatement.accept(this); } + /** */ void visit(const EnumBody enumBody) { enumBody.accept(this); } + /** */ void visit(const EnumDeclaration enumDeclaration) { enumDeclaration.accept(this); } + /** */ void visit(const EnumMember enumMember) { enumMember.accept(this); } + /** */ void visit(const EponymousTemplateDeclaration eponymousTemplateDeclaration) { eponymousTemplateDeclaration.accept(this); } + /** */ void visit(const EqualExpression equalExpression) { equalExpression.accept(this); } + /** */ void visit(const Expression expression) { expression.accept(this); } + /** */ void visit(const ExpressionStatement expressionStatement) { expressionStatement.accept(this); } + /** */ void visit(const FinalSwitchStatement finalSwitchStatement) { finalSwitchStatement.accept(this); } + /** */ void visit(const Finally finally_) { finally_.accept(this); } + /** */ void visit(const ForStatement forStatement) { forStatement.accept(this); } + /** */ void visit(const ForeachStatement foreachStatement) { foreachStatement.accept(this); } + /** */ void visit(const ForeachType foreachType) { foreachType.accept(this); } + /** */ void visit(const ForeachTypeList foreachTypeList) { foreachTypeList.accept(this); } + /** */ void visit(const FunctionAttribute functionAttribute) { functionAttribute.accept(this); } + /** */ void visit(const FunctionBody functionBody) { functionBody.accept(this); } + /** */ void visit(const FunctionCallExpression functionCallExpression) { functionCallExpression.accept(this); } + /** */ void visit(const FunctionCallStatement functionCallStatement) { functionCallStatement.accept(this); } + /** */ void visit(const FunctionDeclaration functionDeclaration) { functionDeclaration.accept(this); } + /** */ void visit(const FunctionLiteralExpression functionLiteralExpression) { functionLiteralExpression.accept(this); } + /** */ void visit(const GotoStatement gotoStatement) { gotoStatement.accept(this); } + /** */ void visit(const IdentifierChain identifierChain) { identifierChain.accept(this); } + /** */ void visit(const IdentifierList identifierList) { identifierList.accept(this); } + /** */ void visit(const IdentifierOrTemplateChain identifierOrTemplateChain) { identifierOrTemplateChain.accept(this); } + /** */ void visit(const IdentifierOrTemplateInstance identifierOrTemplateInstance) { identifierOrTemplateInstance.accept(this); } + /** */ void visit(const IdentityExpression identityExpression) { identityExpression.accept(this); } + /** */ void visit(const IfStatement ifStatement) { ifStatement.accept(this); } + /** */ void visit(const ImportBind importBind) { importBind.accept(this); } + /** */ void visit(const ImportBindings importBindings) { importBindings.accept(this); } + /** */ void visit(const ImportDeclaration importDeclaration) { importDeclaration.accept(this); } + /** */ void visit(const ImportExpression importExpression) { importExpression.accept(this); } + /** */ void visit(const IndexExpression indexExpression) { indexExpression.accept(this); } + /** */ void visit(const InExpression inExpression) { inExpression.accept(this); } + /** */ void visit(const InStatement inStatement) { inStatement.accept(this); } + /** */ void visit(const Initialize initialize) { initialize.accept(this); } + /** */ void visit(const Initializer initializer) { initializer.accept(this); } + /** */ void visit(const InterfaceDeclaration interfaceDeclaration) { interfaceDeclaration.accept(this); } + /** */ void visit(const Invariant invariant_) { invariant_.accept(this); } + /** */ void visit(const IsExpression isExpression) { isExpression.accept(this); } + /** */ void visit(const KeyValuePair keyValuePair) { keyValuePair.accept(this); } + /** */ void visit(const KeyValuePairs keyValuePairs) { keyValuePairs.accept(this); } + /** */ void visit(const LabeledStatement labeledStatement) { labeledStatement.accept(this); } + /** */ void visit(const LambdaExpression lambdaExpression) { lambdaExpression.accept(this); } + /** */ void visit(const LastCatch lastCatch) { lastCatch.accept(this); } + /** */ void visit(const LinkageAttribute linkageAttribute) { linkageAttribute.accept(this); } + /** */ void visit(const MemberFunctionAttribute memberFunctionAttribute) { memberFunctionAttribute.accept(this); } + /** */ void visit(const MixinDeclaration mixinDeclaration) { mixinDeclaration.accept(this); } + /** */ void visit(const MixinExpression mixinExpression) { mixinExpression.accept(this); } + /** */ void visit(const MixinTemplateDeclaration mixinTemplateDeclaration) { mixinTemplateDeclaration.accept(this); } + /** */ void visit(const MixinTemplateName mixinTemplateName) { mixinTemplateName.accept(this); } + /** */ void visit(const Module module_) { module_.accept(this); } + /** */ void visit(const ModuleDeclaration moduleDeclaration) { moduleDeclaration.accept(this); } + /** */ void visit(const MulExpression mulExpression) { mulExpression.accept(this); } + /** */ void visit(const NewAnonClassExpression newAnonClassExpression) { newAnonClassExpression.accept(this); } + /** */ void visit(const NewExpression newExpression) { newExpression.accept(this); } + /** */ void visit(const NonVoidInitializer nonVoidInitializer) { nonVoidInitializer.accept(this); } + /** */ void visit(const Operand operand) { operand.accept(this); } + /** */ void visit(const Operands operands) { operands.accept(this); } + /** */ void visit(const OrExpression orExpression) { orExpression.accept(this); } + /** */ void visit(const OrOrExpression orOrExpression) { orOrExpression.accept(this); } + /** */ void visit(const OutStatement outStatement) { outStatement.accept(this); } + /** */ void visit(const Parameter parameter) { parameter.accept(this); } + /** */ void visit(const Parameters parameters) { parameters.accept(this); } + /** */ void visit(const Postblit postblit) { postblit.accept(this); } + /** */ void visit(const PostIncDecExpression postIncDecExpression) { postIncDecExpression.accept(this); } + /** */ void visit(const PowExpression powExpression) { powExpression.accept(this); } + /** */ void visit(const PragmaDeclaration pragmaDeclaration) { pragmaDeclaration.accept(this); } + /** */ void visit(const PragmaExpression pragmaExpression) { pragmaExpression.accept(this); } + /** */ void visit(const PreIncDecExpression preIncDecExpression) { preIncDecExpression.accept(this); } + /** */ void visit(const PrimaryExpression primaryExpression) { primaryExpression.accept(this); } + /** */ void visit(const Register register) { register.accept(this); } + /** */ void visit(const RelExpression relExpression) { relExpression.accept(this); } + /** */ void visit(const ReturnStatement returnStatement) { returnStatement.accept(this); } + /** */ void visit(const ScopeGuardStatement scopeGuardStatement) { scopeGuardStatement.accept(this); } + /** */ void visit(const SharedStaticConstructor sharedStaticConstructor) { sharedStaticConstructor.accept(this); } + /** */ void visit(const SharedStaticDestructor sharedStaticDestructor) { sharedStaticDestructor.accept(this); } + /** */ void visit(const ShiftExpression shiftExpression) { shiftExpression.accept(this); } + /** */ void visit(const SingleImport singleImport) { singleImport.accept(this); } + /** */ void visit(const SliceExpression sliceExpression) { sliceExpression.accept(this); } + /** */ void visit(const Statement statement) { statement.accept(this); } + /** */ void visit(const StatementNoCaseNoDefault statementNoCaseNoDefault) { statementNoCaseNoDefault.accept(this); } + /** */ void visit(const StaticAssertDeclaration staticAssertDeclaration) { staticAssertDeclaration.accept(this); } + /** */ void visit(const StaticAssertStatement staticAssertStatement) { staticAssertStatement.accept(this); } + /** */ void visit(const StaticConstructor staticConstructor) { staticConstructor.accept(this); } + /** */ void visit(const StaticDestructor staticDestructor) { staticDestructor.accept(this); } + /** */ void visit(const StaticIfCondition staticIfCondition) { staticIfCondition.accept(this); } + /** */ void visit(const StorageClass storageClass) { storageClass.accept(this); } + /** */ void visit(const StructBody structBody) { structBody.accept(this); } + /** */ void visit(const StructDeclaration structDeclaration) { structDeclaration.accept(this); } + /** */ void visit(const StructInitializer structInitializer) { structInitializer.accept(this); } + /** */ void visit(const StructMemberInitializer structMemberInitializer) { structMemberInitializer.accept(this); } + /** */ void visit(const StructMemberInitializers structMemberInitializers) { structMemberInitializers.accept(this); } + /** */ void visit(const SwitchStatement switchStatement) { switchStatement.accept(this); } + /** */ void visit(const Symbol symbol) { symbol.accept(this); } + /** */ void visit(const SynchronizedStatement synchronizedStatement) { synchronizedStatement.accept(this); } + /** */ void visit(const TemplateAliasParameter templateAliasParameter) { templateAliasParameter.accept(this); } + /** */ void visit(const TemplateArgument templateArgument) { templateArgument.accept(this); } + /** */ void visit(const TemplateArgumentList templateArgumentList) { templateArgumentList.accept(this); } + /** */ void visit(const TemplateArguments templateArguments) { templateArguments.accept(this); } + /** */ void visit(const TemplateDeclaration templateDeclaration) { templateDeclaration.accept(this); } + /** */ void visit(const TemplateInstance templateInstance) { templateInstance.accept(this); } + /** */ void visit(const TemplateMixinExpression templateMixinExpression) { templateMixinExpression.accept(this); } + /** */ void visit(const TemplateParameter templateParameter) { templateParameter.accept(this); } + /** */ void visit(const TemplateParameterList templateParameterList) { templateParameterList.accept(this); } + /** */ void visit(const TemplateParameters templateParameters) { templateParameters.accept(this); } + /** */ void visit(const TemplateSingleArgument templateSingleArgument) { templateSingleArgument.accept(this); } + /** */ void visit(const TemplateThisParameter templateThisParameter) { templateThisParameter.accept(this); } + /** */ void visit(const TemplateTupleParameter templateTupleParameter) { templateTupleParameter.accept(this); } + /** */ void visit(const TemplateTypeParameter templateTypeParameter) { templateTypeParameter.accept(this); } + /** */ void visit(const TemplateValueParameter templateValueParameter) { templateValueParameter.accept(this); } + /** */ void visit(const TemplateValueParameterDefault templateValueParameterDefault) { templateValueParameterDefault.accept(this); } + /** */ void visit(const TernaryExpression ternaryExpression) { ternaryExpression.accept(this); } + /** */ void visit(const ThrowStatement throwStatement) { throwStatement.accept(this); } + /** */ void visit(const Token token) { } + /** */ void visit(const TraitsExpression traitsExpression) { traitsExpression.accept(this); } + /** */ void visit(const TryStatement tryStatement) { tryStatement.accept(this); } + /** */ void visit(const Type type) { type.accept(this); } + /** */ void visit(const Type2 type2) { type2.accept(this); } + /** */ void visit(const TypeSpecialization typeSpecialization) { typeSpecialization.accept(this); } + /** */ void visit(const TypeSuffix typeSuffix) { typeSuffix.accept(this); } + /** */ void visit(const TypeidExpression typeidExpression) { typeidExpression.accept(this); } + /** */ void visit(const TypeofExpression typeofExpression) { typeofExpression.accept(this); } + /** */ void visit(const UnaryExpression unaryExpression) { unaryExpression.accept(this); } + /** */ void visit(const UnionDeclaration unionDeclaration) { unionDeclaration.accept(this); } + /** */ void visit(const Unittest unittest_) { unittest_.accept(this); } + /** */ void visit(const VariableDeclaration variableDeclaration) { variableDeclaration.accept(this); } + /** */ void visit(const Vector vector) { vector.accept(this); } + /** */ void visit(const VersionCondition versionCondition) { versionCondition.accept(this); } + /** */ void visit(const VersionSpecification versionSpecification) { versionSpecification.accept(this); } + /** */ void visit(const WhileStatement whileStatement) { whileStatement.accept(this); } + /** */ void visit(const WithStatement withStatement) { withStatement.accept(this); } + /** */ void visit(const XorExpression xorExpression) { xorExpression.accept(this); } } interface ASTNode { public: - /** */ void accept(ASTVisitor visitor); + /** */ void accept(ASTVisitor visitor) const; } -immutable string DEFAULT_ACCEPT = q{override void accept(ASTVisitor visitor) {}}; +immutable string DEFAULT_ACCEPT = q{override void accept(ASTVisitor visitor) const {}}; template visitIfNotNull(fields ...) { @@ -299,7 +299,7 @@ template visitIfNotNull(fields ...) { static if (typeof(fields[0]).stringof[$ - 2 .. $] == "[]") { - static if (__traits(hasMember, typeof(fields[0]), "classinfo")) + static if (__traits(hasMember, typeof(fields[0][0]), "classinfo")) immutable visitIfNotNull = "foreach (i; " ~ fields[0].stringof ~ ") if (i !is null) visitor.visit(i);\n"; else immutable visitIfNotNull = "foreach (i; " ~ fields[0].stringof ~ ") visitor.visit(i);\n"; @@ -314,7 +314,7 @@ template visitIfNotNull(fields ...) abstract class ExpressionNode : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { assert (false); } @@ -329,10 +329,10 @@ mixin template BinaryExpressionBody() } /// -class AddExpression : ExpressionNode +final class AddExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(left, right)); } @@ -341,10 +341,10 @@ public: } /// -class AliasDeclaration : ASTNode +final class AliasDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(linkageAttribute, type, name, initializers)); } @@ -356,10 +356,10 @@ public: } /// -class AliasInitializer : ASTNode +final class AliasInitializer : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(name, type)); } @@ -369,10 +369,10 @@ public: } /// -class AliasThisDeclaration : ASTNode +final class AliasThisDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifier)); } @@ -380,10 +380,10 @@ public: } /// -class AlignAttribute : ASTNode +final class AlignAttribute : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(intLiteral)); } @@ -391,10 +391,10 @@ public: } /// -class AndAndExpression : ExpressionNode +final class AndAndExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(left, right)); } @@ -402,10 +402,10 @@ public: } /// -class AndExpression : ExpressionNode +final class AndExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(left, right)); } @@ -413,10 +413,10 @@ public: } /// -class ArgumentList : ASTNode +final class ArgumentList : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(items)); } @@ -424,10 +424,10 @@ public: } /// -class Arguments : ASTNode +final class Arguments : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(argumentList)); } @@ -435,10 +435,10 @@ public: } /// -class ArrayInitializer : ASTNode +final class ArrayInitializer : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(arrayMemberInitializations)); } @@ -446,10 +446,10 @@ public: } /// -class ArrayLiteral : ASTNode +final class ArrayLiteral : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(argumentList)); } @@ -457,10 +457,10 @@ public: } /// -class ArrayMemberInitialization : ASTNode +final class ArrayMemberInitialization : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(assignExpression, nonVoidInitializer)); } @@ -469,7 +469,7 @@ public: } /// -class AsmAddExp : ExpressionNode +final class AsmAddExp : ExpressionNode { public: mixin (DEFAULT_ACCEPT); @@ -478,7 +478,7 @@ public: } /// -class AsmAndExp : ExpressionNode +final class AsmAndExp : ExpressionNode { public: mixin (DEFAULT_ACCEPT); @@ -486,7 +486,7 @@ public: } /// -class AsmBrExp : ASTNode +final class AsmBrExp : ASTNode { public: mixin (DEFAULT_ACCEPT); @@ -496,7 +496,7 @@ public: } /// -class AsmEqualExp : ExpressionNode +final class AsmEqualExp : ExpressionNode { public: mixin (DEFAULT_ACCEPT); @@ -505,7 +505,7 @@ public: } /// -class AsmExp : ASTNode +final class AsmExp : ASTNode { public: mixin (DEFAULT_ACCEPT); @@ -515,7 +515,7 @@ public: } /// -class AsmInstruction : ASTNode +final class AsmInstruction : ASTNode { public: mixin (DEFAULT_ACCEPT); @@ -526,7 +526,7 @@ public: } /// -class AsmLogAndExp : ExpressionNode +final class AsmLogAndExp : ExpressionNode { public: mixin (DEFAULT_ACCEPT); @@ -534,7 +534,7 @@ public: } /// -class AsmLogOrExp : ExpressionNode +final class AsmLogOrExp : ExpressionNode { public: mixin (DEFAULT_ACCEPT); @@ -542,7 +542,7 @@ public: } /// -class AsmMulExp : ExpressionNode +final class AsmMulExp : ExpressionNode { public: mixin (DEFAULT_ACCEPT); @@ -552,7 +552,7 @@ public: } /// -class AsmOrExp : ExpressionNode +final class AsmOrExp : ExpressionNode { public: mixin (DEFAULT_ACCEPT); @@ -560,7 +560,7 @@ public: } /// -class AsmPrimaryExp : ASTNode +final class AsmPrimaryExp : ASTNode { public: mixin (DEFAULT_ACCEPT); @@ -570,7 +570,7 @@ public: } /// -class AsmRelExp : ExpressionNode +final class AsmRelExp : ExpressionNode { public: mixin (DEFAULT_ACCEPT); @@ -579,7 +579,7 @@ public: } /// -class AsmShiftExp : ExpressionNode +final class AsmShiftExp : ExpressionNode { public: mixin (DEFAULT_ACCEPT); @@ -588,7 +588,7 @@ public: } /// -class AsmStatement : ASTNode +final class AsmStatement : ASTNode { public: mixin (DEFAULT_ACCEPT); @@ -596,7 +596,7 @@ public: } /// -class AsmTypePrefix : ASTNode +final class AsmTypePrefix : ASTNode { public: mixin (DEFAULT_ACCEPT); @@ -605,7 +605,7 @@ public: } /// -class AsmUnaExp : ASTNode +final class AsmUnaExp : ASTNode { public: mixin (DEFAULT_ACCEPT); @@ -617,7 +617,7 @@ public: } /// -class AsmXorExp : ASTNode +final class AsmXorExp : ASTNode { public: mixin (DEFAULT_ACCEPT); @@ -625,10 +625,10 @@ public: } /// -class AssertExpression : ExpressionNode +final class AssertExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(assertion, message)); } @@ -637,10 +637,10 @@ public: } /// -class AssignExpression : ExpressionNode +final class AssignExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(ternaryExpression, assignExpression)); } @@ -650,10 +650,10 @@ public: } /// -class AssocArrayLiteral : ASTNode +final class AssocArrayLiteral : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(keyValuePairs)); } @@ -661,10 +661,10 @@ public: } /// -class AtAttribute : ASTNode +final class AtAttribute : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(functionCallExpression, argumentList)); } @@ -674,10 +674,10 @@ public: } /// -class Attribute : ASTNode +final class Attribute : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(linkageAttribute, alignAttribute, pragmaExpression, storageClass)); @@ -690,9 +690,9 @@ public: } /// -class AttributeDeclaration : ASTNode +final class AttributeDeclaration : ASTNode { - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(attribute)); } @@ -700,10 +700,10 @@ class AttributeDeclaration : ASTNode } /// -class AutoDeclaration : ASTNode +final class AutoDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { foreach (i; 0 .. initializers.length) { @@ -715,10 +715,10 @@ public: } /// -class BlockStatement : ASTNode +final class BlockStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(declarationsAndStatements)); } @@ -737,10 +737,10 @@ public: } /// -class BodyStatement : ASTNode +final class BodyStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(blockStatement)); } @@ -748,10 +748,10 @@ public: } /// -class BreakStatement : ASTNode +final class BreakStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(label)); } @@ -759,10 +759,10 @@ public: } /// -class BaseClass : ASTNode +final class BaseClass : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifierOrTemplateChain, typeofExpression)); } @@ -771,10 +771,10 @@ public: } /// -class BaseClassList : ASTNode +final class BaseClassList : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(items)); } @@ -782,10 +782,10 @@ public: } /// -class CaseRangeStatement : ASTNode +final class CaseRangeStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(low, high, declarationsAndStatements)); } @@ -795,10 +795,10 @@ public: } /// -class CaseStatement: ASTNode +final class CaseStatement: ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(argumentList, declarationsAndStatements)); } @@ -807,10 +807,10 @@ public: } /// -class CastExpression: ASTNode +final class CastExpression: ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(type, castQualifier, unaryExpression)); } @@ -820,10 +820,10 @@ public: } /// -class CastQualifier: ASTNode +final class CastQualifier: ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(first, second)); } @@ -832,10 +832,10 @@ public: } /// -class Catches: ASTNode +final class Catches: ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(catches, lastCatch)); } @@ -844,10 +844,10 @@ public: } /// -class Catch: ASTNode +final class Catch: ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(type, identifier, declarationOrStatement)); } @@ -857,10 +857,10 @@ public: } /// -class ClassDeclaration: ASTNode +final class ClassDeclaration: ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(templateParameters, constraint, baseClassList, structBody)); @@ -875,10 +875,10 @@ public: } /// -class CmpExpression : ExpressionNode +final class CmpExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(shiftExpression, equalExpression, identityExpression, relExpression, inExpression)); @@ -891,10 +891,10 @@ public: } /// -class CompileCondition : ASTNode +final class CompileCondition : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(versionCondition, debugCondition, staticIfCondition)); } @@ -904,10 +904,10 @@ public: } /// -class ConditionalDeclaration : ASTNode +final class ConditionalDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(compileCondition, trueDeclarations, falseDeclaration)); } @@ -917,10 +917,10 @@ public: } /// -class ConditionalStatement : ASTNode +final class ConditionalStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(compileCondition, trueStatement, falseStatement)); } @@ -930,10 +930,10 @@ public: } /// -class Constraint : ASTNode +final class Constraint : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(expression)); } @@ -941,10 +941,10 @@ public: } /// -class Constructor : ASTNode +final class Constructor : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(parameters, templateParameters, constraint, memberFunctionAttributes, functionBody)); @@ -959,10 +959,10 @@ public: } /// -class ContinueStatement : ASTNode +final class ContinueStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(label)); } @@ -970,10 +970,10 @@ public: } /// -class DebugCondition : ASTNode +final class DebugCondition : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifierOrInteger)); } @@ -981,10 +981,10 @@ public: } /// -class DebugSpecification : ASTNode +final class DebugSpecification : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifierOrInteger)); } @@ -992,11 +992,11 @@ public: } /// -class Declaration : ASTNode +final class Declaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(attributes, attributeDeclaration, importDeclaration, functionDeclaration, @@ -1043,9 +1043,9 @@ public: } /// -class DeclarationsAndStatements : ASTNode +final class DeclarationsAndStatements : ASTNode { - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(declarationsAndStatements)); } @@ -1054,10 +1054,10 @@ class DeclarationsAndStatements : ASTNode } /// -class DeclarationOrStatement : ASTNode +final class DeclarationOrStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(declaration, statement)); } @@ -1067,10 +1067,10 @@ public: } /// -class Declarator : ASTNode +final class Declarator : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(initializer)); } @@ -1079,10 +1079,10 @@ public: } /// -class DefaultStatement : ASTNode +final class DefaultStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(declarationsAndStatements)); } @@ -1090,10 +1090,10 @@ public: } /// -class DeleteExpression : ExpressionNode +final class DeleteExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(unaryExpression)); } @@ -1103,10 +1103,10 @@ public: } /// -class DeleteStatement : ASTNode +final class DeleteStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(deleteExpression)); } @@ -1114,10 +1114,10 @@ public: } /// -class Deprecated : ASTNode +final class Deprecated : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(assignExpression)); } @@ -1125,10 +1125,10 @@ public: } /// -class Destructor : ASTNode +final class Destructor : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(functionBody)); } @@ -1138,10 +1138,10 @@ public: } /// -class DoStatement : ASTNode +final class DoStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(expression, statementNoCaseNoDefault)); } @@ -1150,10 +1150,10 @@ public: } /// -class EnumBody : ASTNode +final class EnumBody : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(enumMembers)); } @@ -1171,10 +1171,10 @@ public: } /// -class EnumDeclaration : ASTNode +final class EnumDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(type, enumBody)); } @@ -1185,10 +1185,10 @@ public: } /// -class EnumMember : ASTNode +final class EnumMember : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(name, type, assignExpression)); } @@ -1199,10 +1199,10 @@ public: } /// -class EponymousTemplateDeclaration : ASTNode +final class EponymousTemplateDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(name, templateParameters, assignExpression)); } @@ -1212,10 +1212,10 @@ public: } /// -class EqualExpression : ExpressionNode +final class EqualExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(left, right)); } @@ -1224,10 +1224,10 @@ public: } /// -class Expression : ExpressionNode +final class Expression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(items)); } @@ -1235,10 +1235,10 @@ public: } /// -class ExpressionStatement : ASTNode +final class ExpressionStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(expression)); } @@ -1246,10 +1246,10 @@ public: } /// -class FinalSwitchStatement : ASTNode +final class FinalSwitchStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(switchStatement)); } @@ -1257,10 +1257,10 @@ public: } /// -class Finally : ASTNode +final class Finally : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(declarationOrStatement)); } @@ -1268,10 +1268,10 @@ public: } /// -class ForStatement : ASTNode +final class ForStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(initialization, test, increment, declarationOrStatement)); @@ -1284,10 +1284,10 @@ public: } /// -class ForeachStatement : ASTNode +final class ForeachStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(foreachType, foreachTypeList, low, high, declarationOrStatement)); @@ -1302,10 +1302,10 @@ public: } /// -class ForeachType : ASTNode +final class ForeachType : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(type, identifier)); } @@ -1315,10 +1315,10 @@ public: } /// -class ForeachTypeList : ASTNode +final class ForeachTypeList : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(items)); } @@ -1326,10 +1326,10 @@ public: } /// -class FunctionAttribute : ASTNode +final class FunctionAttribute : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(token, atAttribute)); } @@ -1338,10 +1338,10 @@ public: } /// -class FunctionBody : ASTNode +final class FunctionBody : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(inStatement, outStatement, bodyStatement, blockStatement)); @@ -1354,10 +1354,10 @@ public: } /// -class FunctionCallExpression : ExpressionNode +final class FunctionCallExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(unaryExpression, arguments, templateArguments)); } @@ -1367,10 +1367,10 @@ public: } /// -class FunctionCallStatement : ASTNode +final class FunctionCallStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(functionCallExpression)); } @@ -1378,10 +1378,10 @@ public: } /// -class FunctionDeclaration : ASTNode +final class FunctionDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(returnType, parameters, templateParameters, constraint, memberFunctionAttributes, functionBody)); @@ -1399,10 +1399,10 @@ public: } /// -class FunctionLiteralExpression : ExpressionNode +final class FunctionLiteralExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(type, parameters, functionAttributes, functionBody)); @@ -1415,10 +1415,10 @@ public: } /// -class GotoStatement : ASTNode +final class GotoStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(label, expression)); } @@ -1427,10 +1427,10 @@ public: } /// -class IdentifierChain : ASTNode +final class IdentifierChain : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifiers)); } @@ -1438,10 +1438,10 @@ public: } /// -class IdentifierList : ASTNode +final class IdentifierList : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifiers)); } @@ -1449,10 +1449,10 @@ public: } /// -class IdentifierOrTemplateChain : ASTNode +final class IdentifierOrTemplateChain : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifiersOrTemplateInstances)); } @@ -1461,10 +1461,10 @@ public: } /// -class IdentifierOrTemplateInstance : ASTNode +final class IdentifierOrTemplateInstance : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifier, templateInstance)); } @@ -1474,10 +1474,10 @@ public: } /// -class IdentityExpression : ExpressionNode +final class IdentityExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(left, right)); } @@ -1486,10 +1486,10 @@ public: } /// -class IfStatement : ASTNode +final class IfStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifier, type, expression, thenStatement, elseStatement)); @@ -1503,10 +1503,10 @@ public: } /// -class ImportBind : ASTNode +final class ImportBind : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(left, right)); } @@ -1515,10 +1515,10 @@ public: } /// -class ImportBindings : ASTNode +final class ImportBindings : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(singleImport, importBinds)); } @@ -1527,10 +1527,10 @@ public: } /// -class ImportDeclaration : ASTNode +final class ImportDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(singleImports, importBindings)); } @@ -1539,10 +1539,10 @@ public: } /// -class ImportExpression : ExpressionNode +final class ImportExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(assignExpression)); } @@ -1550,10 +1550,10 @@ public: } /// -class IndexExpression : ExpressionNode +final class IndexExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(unaryExpression, argumentList)); } @@ -1562,10 +1562,10 @@ public: } /// -class InExpression : ExpressionNode +final class InExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(left, right)); } @@ -1574,10 +1574,10 @@ public: } /// -class InStatement : ASTNode +final class InStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(blockStatement)); } @@ -1585,10 +1585,10 @@ public: } /// -class Initialize : ASTNode +final class Initialize : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(statementNoCaseNoDefault)); } @@ -1596,10 +1596,10 @@ public: } /// -class Initializer : ASTNode +final class Initializer : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(nonVoidInitializer)); } @@ -1607,10 +1607,10 @@ public: } /// -class InterfaceDeclaration : ASTNode +final class InterfaceDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(templateParameters, constraint, baseClassList, structBody)); @@ -1624,10 +1624,10 @@ public: } /// -class Invariant : ASTNode +final class Invariant : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(blockStatement)); } @@ -1636,10 +1636,10 @@ public: } /// -class IsExpression : ExpressionNode +final class IsExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(type, identifier, typeSpecialization, templateParameterList)); @@ -1652,10 +1652,10 @@ public: } /// -class KeyValuePair : ASTNode +final class KeyValuePair : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(key, value)); } @@ -1664,10 +1664,10 @@ public: } /// -class KeyValuePairs : ASTNode +final class KeyValuePairs : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(keyValuePairs)); } @@ -1675,10 +1675,10 @@ public: } /// -class LabeledStatement : ASTNode +final class LabeledStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifier, declarationOrStatement)); } @@ -1687,10 +1687,10 @@ public: } /// -class LambdaExpression : ExpressionNode +final class LambdaExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifier, parameters, functionAttributes, assignExpression)); @@ -1703,10 +1703,10 @@ public: } /// -class LastCatch : ASTNode +final class LastCatch : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(statementNoCaseNoDefault)); } @@ -1714,10 +1714,10 @@ public: } /// -class LinkageAttribute : ASTNode +final class LinkageAttribute : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifier)); } @@ -1726,10 +1726,10 @@ public: } /// -class MemberFunctionAttribute : ASTNode +final class MemberFunctionAttribute : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(atAttribute)); } @@ -1738,10 +1738,10 @@ public: } /// -class MixinDeclaration : ASTNode +final class MixinDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(mixinExpression, templateMixinExpression)); } @@ -1750,10 +1750,10 @@ public: } /// -class MixinExpression : ExpressionNode +final class MixinExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(assignExpression)); } @@ -1761,10 +1761,10 @@ public: } /// -class MixinTemplateDeclaration : ASTNode +final class MixinTemplateDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(templateDeclaration)); } @@ -1772,10 +1772,10 @@ public: } /// -class MixinTemplateName : ASTNode +final class MixinTemplateName : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(symbol, typeofExpression, identifierOrTemplateChain)); } @@ -1785,10 +1785,10 @@ public: } /// -class Module : ASTNode +final class Module : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(moduleDeclaration, declarations)); } @@ -1797,10 +1797,10 @@ public: } /// -class ModuleDeclaration : ASTNode +final class ModuleDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(moduleName)); } @@ -1809,10 +1809,10 @@ public: /// -class MulExpression : ExpressionNode +final class MulExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(left, right)); } @@ -1821,10 +1821,10 @@ public: } /// -class NewAnonClassExpression : ExpressionNode +final class NewAnonClassExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(allocatorArguments, constructorArguments, baseClassList, structBody)); @@ -1836,10 +1836,10 @@ public: } /// -class NewExpression : ExpressionNode +final class NewExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(newAnonClassExpression, type, arguments, assignExpression)); @@ -1852,10 +1852,10 @@ public: /// -class StatementNoCaseNoDefault : ASTNode +final class StatementNoCaseNoDefault : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(labeledStatement, blockStatement, ifStatement, whileStatement, doStatement, forStatement, foreachStatement, @@ -1894,10 +1894,10 @@ public: } /// -class NonVoidInitializer : ASTNode +final class NonVoidInitializer : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(assignExpression, arrayInitializer, structInitializer)); } @@ -1908,7 +1908,7 @@ public: } /// -class Operand : ASTNode +final class Operand : ASTNode { public: mixin (DEFAULT_ACCEPT); @@ -1916,7 +1916,7 @@ public: } /// -class Operands : ASTNode +final class Operands : ASTNode { public: mixin (DEFAULT_ACCEPT); @@ -1924,10 +1924,10 @@ public: } /// -class OrExpression : ExpressionNode +final class OrExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(left, right)); } @@ -1935,10 +1935,10 @@ public: } /// -class OrOrExpression : ExpressionNode +final class OrOrExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(left, right)); } @@ -1946,10 +1946,10 @@ public: } /// -class OutStatement : ASTNode +final class OutStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(parameter, blockStatement)); } @@ -1958,10 +1958,10 @@ public: } /// -class Parameter : ASTNode +final class Parameter : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(type, name, default_)); } @@ -1974,10 +1974,10 @@ public: } /// -class Parameters : ASTNode +final class Parameters : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(parameters)); } @@ -1987,10 +1987,10 @@ public: } /// -class Postblit : ASTNode +final class Postblit : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(functionBody)); } @@ -1998,10 +1998,10 @@ public: } /// -class PostIncDecExpression : ExpressionNode +final class PostIncDecExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(unaryExpression)); } @@ -2010,10 +2010,10 @@ public: } /// -class PowExpression : ExpressionNode +final class PowExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(left, right)); } @@ -2021,10 +2021,10 @@ public: } /// -class PragmaDeclaration : ASTNode +final class PragmaDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(pragmaExpression)); } @@ -2032,10 +2032,10 @@ public: } /// -class PragmaExpression : ExpressionNode +final class PragmaExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifier, argumentList)); } @@ -2044,10 +2044,10 @@ public: } /// -class PreIncDecExpression : ExpressionNode +final class PreIncDecExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(unaryExpression)); } @@ -2056,10 +2056,10 @@ public: } /// -class PrimaryExpression : ExpressionNode +final class PrimaryExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(basicType, primary, typeofExpression, typeidExpression, arrayLiteral, assocArrayLiteral, expression, @@ -2086,7 +2086,7 @@ public: } /// -class Register : ASTNode +final class Register : ASTNode { public: mixin (DEFAULT_ACCEPT); @@ -2096,10 +2096,10 @@ public: } /// -class RelExpression : ExpressionNode +final class RelExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(left, right)); } @@ -2108,10 +2108,10 @@ public: } /// -class ReturnStatement : ASTNode +final class ReturnStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(expression)); } @@ -2119,10 +2119,10 @@ public: } /// -class ScopeGuardStatement : ASTNode +final class ScopeGuardStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifier, statementNoCaseNoDefault)); } @@ -2131,10 +2131,10 @@ public: } /// -class SharedStaticConstructor : ASTNode +final class SharedStaticConstructor : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(functionBody)); } @@ -2144,10 +2144,10 @@ public: } /// -class SharedStaticDestructor : ASTNode +final class SharedStaticDestructor : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(functionBody)); } @@ -2157,10 +2157,10 @@ public: } /// -class ShiftExpression : ExpressionNode +final class ShiftExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(left, right)); } @@ -2169,10 +2169,10 @@ public: } /// -class SingleImport : ASTNode +final class SingleImport : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(rename, identifierChain)); } @@ -2181,10 +2181,10 @@ public: } /// -class SliceExpression : ExpressionNode +final class SliceExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(unaryExpression, lower, upper)); } @@ -2194,10 +2194,10 @@ public: } /// -class Statement : ASTNode +final class Statement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(statementNoCaseNoDefault, caseStatement, caseRangeStatement, defaultStatement)); @@ -2209,10 +2209,10 @@ public: } /// -class StaticAssertDeclaration : ASTNode +final class StaticAssertDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(staticAssertStatement)); } @@ -2220,10 +2220,10 @@ public: } /// -class StaticAssertStatement : ASTNode +final class StaticAssertStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(assertExpression)); } @@ -2231,10 +2231,10 @@ public: } /// -class StaticConstructor : ASTNode +final class StaticConstructor : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(functionBody)); } @@ -2244,10 +2244,10 @@ public: } /// -class StaticDestructor : ASTNode +final class StaticDestructor : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(functionBody)); } @@ -2257,10 +2257,10 @@ public: } /// -class StaticIfCondition : ASTNode +final class StaticIfCondition : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(assignExpression)); } @@ -2268,10 +2268,10 @@ public: } /// -class StorageClass : ASTNode +final class StorageClass : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(token, deprecated_, atAttribute)); } @@ -2281,10 +2281,10 @@ public: } /// -class StructBody : ASTNode +final class StructBody : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(declarations)); } @@ -2302,10 +2302,10 @@ public: } /// -class StructDeclaration : ASTNode +final class StructDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(templateParameters, constraint, structBody)); } @@ -2317,10 +2317,10 @@ public: } /// -class StructInitializer : ASTNode +final class StructInitializer : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(structMemberInitializers)); } @@ -2329,10 +2329,10 @@ public: } /// -class StructMemberInitializer : ASTNode +final class StructMemberInitializer : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifier, nonVoidInitializer)); } @@ -2341,10 +2341,10 @@ public: } /// -class StructMemberInitializers : ASTNode +final class StructMemberInitializers : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(structMemberInitializers)); } @@ -2352,10 +2352,10 @@ public: } /// -class SwitchStatement : ASTNode +final class SwitchStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(expression, statement)); } @@ -2364,10 +2364,10 @@ public: } /// -class Symbol : ASTNode +final class Symbol : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifierOrTemplateChain)); } @@ -2377,10 +2377,10 @@ public: } /// -class SynchronizedStatement : ASTNode +final class SynchronizedStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(expression, statementNoCaseNoDefault)); } @@ -2389,10 +2389,10 @@ public: } /// -class TemplateAliasParameter : ASTNode +final class TemplateAliasParameter : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(type, identifier, colonType, colonExpression, assignType, assignExpression)); @@ -2406,10 +2406,10 @@ public: } /// -class TemplateArgument : ASTNode +final class TemplateArgument : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(type, assignExpression)); } @@ -2418,10 +2418,10 @@ public: } /// -class TemplateArgumentList : ASTNode +final class TemplateArgumentList : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(items)); } @@ -2429,10 +2429,10 @@ public: } /// -class TemplateArguments : ASTNode +final class TemplateArguments : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(templateArgumentList, templateSingleArgument)); } @@ -2441,10 +2441,10 @@ public: } /// -class TemplateDeclaration : ASTNode +final class TemplateDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(name, templateParameters, constraint, declarations, eponymousTemplateDeclaration)); @@ -2458,10 +2458,10 @@ public: } /// -class TemplateInstance : ASTNode +final class TemplateInstance : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifier, templateArguments)); } @@ -2470,10 +2470,10 @@ public: } /// -class TemplateMixinExpression : ExpressionNode +final class TemplateMixinExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifier, templateArguments, mixinTemplateName)); } @@ -2483,10 +2483,10 @@ public: } /// -class TemplateParameter : ASTNode +final class TemplateParameter : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(templateTypeParameter, templateValueParameter, templateAliasParameter, templateTupleParameter, @@ -2500,10 +2500,10 @@ public: } /// -class TemplateParameterList : ASTNode +final class TemplateParameterList : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(items)); } @@ -2511,10 +2511,10 @@ public: } /// -class TemplateParameters : ASTNode +final class TemplateParameters : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(templateParameterList)); } @@ -2522,10 +2522,10 @@ public: } /// -class TemplateSingleArgument : ASTNode +final class TemplateSingleArgument : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(token)); } @@ -2533,10 +2533,10 @@ public: } /// -class TemplateThisParameter : ASTNode +final class TemplateThisParameter : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(templateTypeParameter)); } @@ -2544,10 +2544,10 @@ public: } /// -class TemplateTupleParameter : ASTNode +final class TemplateTupleParameter : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifier)); } @@ -2555,10 +2555,10 @@ public: } /// -class TemplateTypeParameter : ASTNode +final class TemplateTypeParameter : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifier, colonType, assignType)); } @@ -2568,10 +2568,10 @@ public: } /// -class TemplateValueParameter : ASTNode +final class TemplateValueParameter : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(type, identifier, expression, templateValueParameterDefault)); @@ -2583,10 +2583,10 @@ public: } /// -class TemplateValueParameterDefault : ASTNode +final class TemplateValueParameterDefault : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(token, assignExpression)); } @@ -2595,10 +2595,10 @@ public: } /// -class TernaryExpression : ExpressionNode +final class TernaryExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(orOrExpression, expression, ternaryExpression)); } @@ -2608,10 +2608,10 @@ public: } /// -class ThrowStatement : ASTNode +final class ThrowStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(expression)); } @@ -2619,10 +2619,10 @@ public: } /// -class TraitsExpression : ExpressionNode +final class TraitsExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(identifier, templateArgumentList)); } @@ -2631,10 +2631,10 @@ public: } /// -class TryStatement : ASTNode +final class TryStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(declarationOrStatement, catches, finally_)); } @@ -2644,10 +2644,10 @@ public: } /// -class Type : ASTNode +final class Type : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(type2, typeSuffixes)); } @@ -2658,10 +2658,10 @@ public: } /// -class Type2 : ASTNode +final class Type2 : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(symbol, typeofExpression, identifierOrTemplateChain, type)); @@ -2676,10 +2676,10 @@ public: } /// -class TypeSpecialization : ASTNode +final class TypeSpecialization : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(token, type)); } @@ -2688,10 +2688,10 @@ public: } /// -class TypeSuffix : ASTNode +final class TypeSuffix : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(type, low, high, delegateOrFunction, parameters, memberFunctionAttributes)); @@ -2708,10 +2708,10 @@ public: } /// -class TypeidExpression : ExpressionNode +final class TypeidExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(type, expression)); } @@ -2720,10 +2720,10 @@ public: } /// -class TypeofExpression : ExpressionNode +final class TypeofExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(expression, return_)); } @@ -2732,10 +2732,10 @@ public: } /// -class UnaryExpression : ExpressionNode +final class UnaryExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { // TODO prefix, postfix, unary mixin (visitIfNotNull!(primaryExpression, newExpression, @@ -2761,10 +2761,10 @@ public: } /// -class UnionDeclaration : ASTNode +final class UnionDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(name, templateParameters, constraint, structBody)); } @@ -2777,10 +2777,10 @@ public: } /// -class Unittest : ASTNode +final class Unittest : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(blockStatement)); } @@ -2789,10 +2789,10 @@ public: } /// -class VariableDeclaration : ASTNode +final class VariableDeclaration : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(storageClass, type, declarators, autoDeclaration)); } @@ -2804,10 +2804,10 @@ public: } /// -class Vector : ASTNode +final class Vector : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(type)); } @@ -2815,10 +2815,10 @@ public: } /// -class VersionCondition : ASTNode +final class VersionCondition : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(token)); } @@ -2826,10 +2826,10 @@ public: } /// -class VersionSpecification : ASTNode +final class VersionSpecification : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(token)); } @@ -2837,10 +2837,10 @@ public: } /// -class WhileStatement : ASTNode +final class WhileStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(expression, declarationOrStatement)); } @@ -2851,10 +2851,10 @@ public: } /// -class WithStatement : ASTNode +final class WithStatement : ASTNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(expression, statementNoCaseNoDefault)); } @@ -2864,10 +2864,10 @@ public: } /// -class XorExpression : ExpressionNode +final class XorExpression : ExpressionNode { public: - override void accept(ASTVisitor visitor) + override void accept(ASTVisitor visitor) const { mixin (visitIfNotNull!(left, right)); }