Closer to having the AST classes completed
This commit is contained in:
parent
830bd82ae3
commit
4a9c8699a5
261
std/d/ast.d
261
std/d/ast.d
|
@ -125,7 +125,6 @@ public:
|
|||
/** */ void visit(ImportBindings importBindings) { importBindings.accept(this); }
|
||||
/** */ void visit(ImportDeclaration importDeclaration) { importDeclaration.accept(this); }
|
||||
/** */ void visit(ImportExpression importExpression) { importExpression.accept(this); }
|
||||
/** */ void visit(ImportList importList) { importList.accept(this); }
|
||||
/** */ void visit(IndexExpression indexExpression) { indexExpression.accept(this); }
|
||||
/** */ void visit(InExpression inExpression) { inExpression.accept(this); }
|
||||
/** */ void visit(InStatement inStatement) { inStatement.accept(this); }
|
||||
|
@ -1171,7 +1170,11 @@ public:
|
|||
class ForeachStatement : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(foreachTypeList, low, high,
|
||||
statementNoCaseNoDefault));
|
||||
}
|
||||
/** */ TokenType foreachType;
|
||||
/** */ ForeachTypeList foreachTypeList;
|
||||
/** */ Expression low;
|
||||
|
@ -1183,7 +1186,10 @@ public:
|
|||
class ForeachType : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(type, identifier));
|
||||
}
|
||||
/** */ TokenType[] typeConstructors;
|
||||
/** */ Type type;
|
||||
/** */ Token identifier;
|
||||
|
@ -1193,7 +1199,10 @@ public:
|
|||
class ForeachTypeList : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(items));
|
||||
}
|
||||
/** */ ForeachType[] items;
|
||||
}
|
||||
|
||||
|
@ -1201,7 +1210,10 @@ public:
|
|||
class FunctionAttribute : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(token, atAttribute));
|
||||
}
|
||||
/** */ Token token;
|
||||
/** */ AtAttribute atAttribute;
|
||||
}
|
||||
|
@ -1226,7 +1238,10 @@ public:
|
|||
class FunctionCallExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(unaryExpression, arguments, templateArguments));
|
||||
}
|
||||
/** */ UnaryExpression unaryExpression;
|
||||
/** */ TemplateArguments templateArguments;
|
||||
/** */ Arguments arguments;
|
||||
|
@ -1236,7 +1251,10 @@ public:
|
|||
class FunctionCallStatement : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(functionCallExpression));
|
||||
}
|
||||
/** */ FunctionCallExpression functionCallExpression;
|
||||
}
|
||||
|
||||
|
@ -1246,10 +1264,9 @@ class FunctionDeclaration : ASTNode
|
|||
public:
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(memberFunctionAttributes, returnType, parameters,
|
||||
templateParameters, constraint, functionBody));
|
||||
mixin (visitIfNotNull!(returnType, parameters, templateParameters,
|
||||
constraint, memberFunctionAttributes, functionBody));
|
||||
}
|
||||
|
||||
/** */ bool hasAuto;
|
||||
/** */ bool hasRef;
|
||||
/** */ Type returnType;
|
||||
|
@ -1265,7 +1282,11 @@ public:
|
|||
class FunctionLiteralExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(type, parameters, functionAttributes,
|
||||
functionBody));
|
||||
}
|
||||
/** */ TokenType functionOrDelegate;
|
||||
/** */ Type type;
|
||||
/** */ Parameters parameters;
|
||||
|
@ -1308,13 +1329,16 @@ public:
|
|||
class IdentifierOrTemplateChain : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(identifiersOrTemplateInstances));
|
||||
}
|
||||
|
||||
override string toString()
|
||||
{
|
||||
string rVal;
|
||||
bool first = true;
|
||||
foreach (iot; identifierOrTemplateInstances)
|
||||
foreach (iot; identifiersOrTemplateInstances)
|
||||
{
|
||||
if (!first)
|
||||
rVal ~= ".";
|
||||
|
@ -1323,14 +1347,17 @@ public:
|
|||
}
|
||||
return rVal;
|
||||
}
|
||||
/** */ IdentifierOrTemplateInstance[] identifierOrTemplateInstances;
|
||||
/** */ IdentifierOrTemplateInstance[] identifiersOrTemplateInstances;
|
||||
}
|
||||
|
||||
///
|
||||
class IdentifierOrTemplateInstance : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(identifier, templateInstance));
|
||||
}
|
||||
|
||||
override string toString()
|
||||
{
|
||||
|
@ -1347,7 +1374,10 @@ public:
|
|||
class IdentityExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(left, right));
|
||||
}
|
||||
/** */ bool negated;
|
||||
mixin BinaryExpressionBody;
|
||||
}
|
||||
|
@ -1356,7 +1386,11 @@ public:
|
|||
class IfStatement : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(identifier, type, expression, thenStatement,
|
||||
elseStatement));
|
||||
}
|
||||
/** */ Token identifier;
|
||||
/** */ Type type;
|
||||
/** */ Expression expression;
|
||||
|
@ -1371,14 +1405,16 @@ public:
|
|||
mixin (DEFAULT_ACCEPT);
|
||||
/** */ Token left;
|
||||
/** */ Token right;
|
||||
/** */ bool hasRight;
|
||||
}
|
||||
|
||||
///
|
||||
class ImportBindings : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(singleImport, importBinds));
|
||||
}
|
||||
/** */ SingleImport singleImport;
|
||||
/** */ ImportBind[] importBinds;
|
||||
}
|
||||
|
@ -1387,7 +1423,10 @@ public:
|
|||
class ImportDeclaration : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(singleImports, importBindings));
|
||||
}
|
||||
/** */ SingleImport[] singleImports;
|
||||
/** */ ImportBindings importBindings;
|
||||
}
|
||||
|
@ -1396,25 +1435,21 @@ public:
|
|||
class ImportExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(assignExpression));
|
||||
}
|
||||
/** */ AssignExpression assignExpression;
|
||||
}
|
||||
|
||||
///
|
||||
class ImportList : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/** */ SingleImport singleImport;
|
||||
/** */ ImportList next;
|
||||
/** */ ImportBindings bindings;
|
||||
}
|
||||
|
||||
///
|
||||
class IndexExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(unaryExpression, argumentList));
|
||||
}
|
||||
/** */ UnaryExpression unaryExpression;
|
||||
/** */ ArgumentList argumentList;
|
||||
}
|
||||
|
@ -1423,16 +1458,22 @@ public:
|
|||
class InExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/** */ Token operator;
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(left, right));
|
||||
}
|
||||
mixin BinaryExpressionBody;
|
||||
bool negated;
|
||||
}
|
||||
|
||||
///
|
||||
class InStatement : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(blockStatement));
|
||||
}
|
||||
/** */ BlockStatement blockStatement;
|
||||
}
|
||||
|
||||
|
@ -1440,7 +1481,10 @@ public:
|
|||
class Initialize : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(statementNoCaseNoDefault));
|
||||
}
|
||||
/** */ StatementNoCaseNoDefault statementNoCaseNoDefault;
|
||||
}
|
||||
|
||||
|
@ -1448,7 +1492,10 @@ public:
|
|||
class Initializer : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(nonVoidInitializer));
|
||||
}
|
||||
/** */ NonVoidInitializer nonVoidInitializer;
|
||||
}
|
||||
|
||||
|
@ -1472,7 +1519,10 @@ public:
|
|||
class Invariant : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(blockStatement));
|
||||
}
|
||||
/** */ BlockStatement blockStatement;
|
||||
}
|
||||
|
||||
|
@ -1480,9 +1530,12 @@ public:
|
|||
class IsExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(type, identifier, typeSpecialization,
|
||||
templateParameterList));
|
||||
}
|
||||
/** */ Type type;
|
||||
/** */ AssignExpression assignExpression;
|
||||
/** */ Token identifier;
|
||||
/** */ TypeSpecialization typeSpecialization;
|
||||
/** */ TemplateParameterList templateParameterList;
|
||||
|
@ -1493,7 +1546,10 @@ public:
|
|||
class KeyValuePair : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(key, value));
|
||||
}
|
||||
/** */ AssignExpression key;
|
||||
/** */ AssignExpression value;
|
||||
}
|
||||
|
@ -1502,7 +1558,10 @@ public:
|
|||
class KeyValuePairs : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(keyValuePairs));
|
||||
}
|
||||
/** */ KeyValuePair[] keyValuePairs;
|
||||
}
|
||||
|
||||
|
@ -1510,7 +1569,10 @@ public:
|
|||
class LabeledStatement : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(identifier, declarationOrStatement));
|
||||
}
|
||||
Token identifier;
|
||||
/** */ DeclarationOrStatement declarationOrStatement;
|
||||
}
|
||||
|
@ -1519,7 +1581,11 @@ public:
|
|||
class LambdaExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(identifier, parameters, functionAttributes,
|
||||
assignExpression));
|
||||
}
|
||||
/** */ TokenType functionType;
|
||||
/** */ Token identifier;
|
||||
/** */ Parameters parameters;
|
||||
|
@ -1531,7 +1597,10 @@ public:
|
|||
class LastCatch : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(statementNoCaseNoDefault));
|
||||
}
|
||||
/** */ StatementNoCaseNoDefault statementNoCaseNoDefault;
|
||||
}
|
||||
|
||||
|
@ -1548,7 +1617,10 @@ public:
|
|||
class MemberFunctionAttribute : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(atAttribute));
|
||||
}
|
||||
/** */ TokenType tokenType;
|
||||
/** */ AtAttribute atAttribute;
|
||||
}
|
||||
|
@ -1557,7 +1629,10 @@ public:
|
|||
class MixinDeclaration : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(mixinExpression, templateMixinExpression));
|
||||
}
|
||||
/** */ MixinExpression mixinExpression;
|
||||
/** */ TemplateMixinExpression templateMixinExpression;
|
||||
}
|
||||
|
@ -1566,7 +1641,10 @@ public:
|
|||
class MixinExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(assignExpression));
|
||||
}
|
||||
/** */ AssignExpression assignExpression;
|
||||
}
|
||||
|
||||
|
@ -1574,7 +1652,10 @@ public:
|
|||
class MixinTemplateDeclaration : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(templateDeclaration));
|
||||
}
|
||||
/** */ TemplateDeclaration templateDeclaration;
|
||||
}
|
||||
|
||||
|
@ -1582,8 +1663,11 @@ public:
|
|||
class MixinTemplateName : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/** */ bool hasDot;
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(symbol, typeofExpression, identifierOrTemplateChain));
|
||||
}
|
||||
/** */ Symbol symbol;
|
||||
/** */ IdentifierOrTemplateChain identifierOrTemplateChain;
|
||||
/** */ TypeofExpression typeofExpression;
|
||||
}
|
||||
|
@ -1594,10 +1678,7 @@ class Module : ASTNode
|
|||
public:
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
if (moduleDeclaration !is null)
|
||||
visitor.visit(moduleDeclaration);
|
||||
foreach(d; declarations)
|
||||
visitor.visit(d);
|
||||
mixin (visitIfNotNull!(moduleDeclaration, declarations));
|
||||
}
|
||||
/** */ ModuleDeclaration moduleDeclaration;
|
||||
/** */ Declaration[] declarations;
|
||||
|
@ -1609,7 +1690,7 @@ class ModuleDeclaration : ASTNode
|
|||
public:
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
if (moduleName !is null) visitor.visit(moduleName);
|
||||
mixin (visitIfNotNull!(moduleName));
|
||||
}
|
||||
/** */ IdentifierChain moduleName;
|
||||
}
|
||||
|
@ -1619,7 +1700,10 @@ public:
|
|||
class MulExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(left, right));
|
||||
}
|
||||
/** */ TokenType operator;
|
||||
mixin BinaryExpressionBody;
|
||||
}
|
||||
|
@ -1628,7 +1712,11 @@ public:
|
|||
class NewAnonClassExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(allocatorArguments, constructorArguments,
|
||||
baseClassList, structBody));
|
||||
}
|
||||
/** */ Arguments allocatorArguments;
|
||||
/** */ Arguments constructorArguments;
|
||||
/** */ BaseClassList baseClassList;
|
||||
|
@ -1639,7 +1727,11 @@ public:
|
|||
class NewExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(newAnonClassExpression, type, arguments,
|
||||
assignExpression));
|
||||
}
|
||||
/** */ Type type;
|
||||
/** */ NewAnonClassExpression newAnonClassExpression;
|
||||
/** */ Arguments arguments;
|
||||
|
@ -1651,7 +1743,17 @@ public:
|
|||
class StatementNoCaseNoDefault : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(labeledStatement, blockStatement, ifStatement,
|
||||
whileStatement, doStatement, forStatement, foreachStatement,
|
||||
switchStatement, finalSwitchStatement, continueStatement,
|
||||
breakStatement, returnStatement, gotoStatement, withStatement,
|
||||
synchronizedStatement, tryStatement, throwStatement,
|
||||
scopeGuardStatement, asmStatement, conditionalStatement,
|
||||
staticAssertStatement, versionSpecification, debugSpecification,
|
||||
functionCallStatement, expressionStatement));
|
||||
}
|
||||
/** */ LabeledStatement labeledStatement;
|
||||
/** */ BlockStatement blockStatement;
|
||||
/** */ IfStatement ifStatement;
|
||||
|
@ -1683,7 +1785,10 @@ public:
|
|||
class NonVoidInitializer : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(assignExpression, arrayInitializer, structInitializer));
|
||||
}
|
||||
/** */ AssignExpression assignExpression;
|
||||
/** */ ArrayInitializer arrayInitializer;
|
||||
/** */ StructInitializer structInitializer;
|
||||
|
@ -1710,7 +1815,10 @@ public:
|
|||
class OrExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(left, right));
|
||||
}
|
||||
mixin BinaryExpressionBody;
|
||||
}
|
||||
|
||||
|
@ -1718,7 +1826,10 @@ public:
|
|||
class OrOrExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(left, right));
|
||||
}
|
||||
mixin BinaryExpressionBody;
|
||||
}
|
||||
|
||||
|
@ -1726,7 +1837,10 @@ public:
|
|||
class OutStatement : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(parameter, blockStatement));
|
||||
}
|
||||
/** */ Token parameter;
|
||||
/** */ BlockStatement blockStatement;
|
||||
}
|
||||
|
@ -1737,7 +1851,7 @@ class Parameter : ASTNode
|
|||
public:
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(type, default_));
|
||||
mixin (visitIfNotNull!(type, name, default_));
|
||||
}
|
||||
/** */ TokenType[] parameterAttributes;
|
||||
/** */ Type type;
|
||||
|
@ -1888,7 +2002,10 @@ public:
|
|||
class ShiftExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(left, right));
|
||||
}
|
||||
/** */ TokenType operator;
|
||||
mixin BinaryExpressionBody;
|
||||
}
|
||||
|
@ -1897,8 +2014,11 @@ public:
|
|||
class SingleImport : ASTNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/** */ Token identifier;
|
||||
override void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(rename, identifierChain));
|
||||
}
|
||||
/** */ Token rename;
|
||||
/** */ IdentifierChain identifierChain;
|
||||
}
|
||||
|
||||
|
@ -1906,7 +2026,10 @@ public:
|
|||
class SliceExpression : ExpressionNode
|
||||
{
|
||||
public:
|
||||
mixin (DEFAULT_ACCEPT);
|
||||
/+override+/ void accept(ASTVisitor visitor)
|
||||
{
|
||||
mixin (visitIfNotNull!(unaryExpression, lower, upper));
|
||||
}
|
||||
/** */ UnaryExpression unaryExpression;
|
||||
/** */ AssignExpression lower;
|
||||
/** */ AssignExpression upper;
|
||||
|
|
|
@ -2573,7 +2573,7 @@ body {} // six
|
|||
auto node = new IdentifierOrTemplateChain;
|
||||
while (moreTokens())
|
||||
{
|
||||
node.identifierOrTemplateInstances ~= parseIdentifierOrTemplateInstance();
|
||||
node.identifiersOrTemplateInstances ~= parseIdentifierOrTemplateInstance();
|
||||
if (!currentIs(TokenType.dot))
|
||||
break;
|
||||
else
|
||||
|
@ -2706,7 +2706,6 @@ body {} // six
|
|||
if (currentIs(TokenType.assign))
|
||||
{
|
||||
advance();
|
||||
node.hasRight = true;
|
||||
auto id = expect(TokenType.identifier);
|
||||
if (id is null) return null;
|
||||
node.right = *id;
|
||||
|
@ -2881,7 +2880,10 @@ import core.stdc.stdio, std.string : KeepTerminator;
|
|||
auto node = new InExpression;
|
||||
node.left = shift is null ? parseShiftExpression() : shift;
|
||||
if (currentIs(TokenType.not))
|
||||
{
|
||||
node.negated = true;
|
||||
advance();
|
||||
}
|
||||
if (expect(TokenType.in_) is null) return null;
|
||||
node.right = parseShiftExpression();
|
||||
return node;
|
||||
|
@ -3064,7 +3066,7 @@ invariant() foo();
|
|||
* Parses an IsExpression
|
||||
*
|
||||
* $(GRAMMAR $(RULEDEF isExpression):
|
||||
* $(LITERAL'is') $(LITERAL '$(LPAREN)') ($(RULE type) $(LITERAL Identifier)? (($(LITERAL ':') | $(LITERAL '==')) $(RULE typeSpecialization) ($(LITERAL ',') $(RULE templateParameterList))?)?) $(LITERAL '$(RPAREN)')
|
||||
* $(LITERAL'is') $(LITERAL '$(LPAREN)') $(RULE type) $(LITERAL Identifier)? (($(LITERAL ':') | $(LITERAL '==')) $(RULE typeSpecialization) ($(LITERAL ',') $(RULE templateParameterList))?)? $(LITERAL '$(RPAREN)')
|
||||
* ;)
|
||||
*/
|
||||
IsExpression parseIsExpression()
|
||||
|
@ -3343,7 +3345,8 @@ invariant() foo();
|
|||
* Parses a MixinTemplateName
|
||||
*
|
||||
* $(GRAMMAR $(RULEDEF mixinTemplateName):
|
||||
* ($(RULE typeofExpression)? $(LITERAL '.'))? $(RULE identifierOrTemplateChain)
|
||||
* $(RULE symbol)
|
||||
* | $(RULE typeofExpression) $(LITERAL '.') $(RULE identifierOrTemplateChain)
|
||||
* ;)
|
||||
*/
|
||||
MixinTemplateName parseMixinTemplateName()
|
||||
|
@ -3354,8 +3357,10 @@ invariant() foo();
|
|||
{
|
||||
node.typeofExpression = parseTypeofExpression();
|
||||
expect(TokenType.dot);
|
||||
}
|
||||
node.identifierOrTemplateChain = parseIdentifierOrTemplateChain();
|
||||
}
|
||||
else
|
||||
node.symbol = parseSymbol();
|
||||
return node;
|
||||
}
|
||||
|
||||
|
@ -4303,8 +4308,8 @@ q{(int a, ...)
|
|||
auto node = new SingleImport;
|
||||
if (startsWith(TokenType.identifier, TokenType.assign))
|
||||
{
|
||||
node.identifier = advance();
|
||||
advance();
|
||||
node.rename = advance();
|
||||
advance(); // =
|
||||
}
|
||||
node.identifierChain = parseIdentifierChain();
|
||||
return node;
|
||||
|
|
Loading…
Reference in New Issue