Parser: Support {start,end}Location for ReturnStatement
This commit is contained in:
parent
fb6116c041
commit
2f4d53338e
|
@ -2302,6 +2302,8 @@ public:
|
||||||
mixin (visitIfNotNull!(expression));
|
mixin (visitIfNotNull!(expression));
|
||||||
}
|
}
|
||||||
/** */ Expression expression;
|
/** */ Expression expression;
|
||||||
|
/** */ size_t startLocation;
|
||||||
|
/** */ size_t endLocation;
|
||||||
mixin OpEquals;
|
mixin OpEquals;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4425,10 +4425,14 @@ q{(int a, ...)
|
||||||
{
|
{
|
||||||
mixin(traceEnterAndExit!(__FUNCTION__));
|
mixin(traceEnterAndExit!(__FUNCTION__));
|
||||||
auto node = allocate!ReturnStatement;
|
auto node = allocate!ReturnStatement;
|
||||||
if (expect(tok!"return") is null) return null;
|
auto start = expect(tok!"return");
|
||||||
|
if (start is null) return null;
|
||||||
|
node.startLocation = start.index;
|
||||||
if (!currentIs(tok!";"))
|
if (!currentIs(tok!";"))
|
||||||
node.expression = parseExpression();
|
node.expression = parseExpression();
|
||||||
if (expect(tok!";") is null) return null;
|
auto semicolon = expect(tok!";");
|
||||||
|
if (semicolon is null) return null;
|
||||||
|
node.endLocation = semicolon.index;
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue