Parser: Support {start,end}Location for ReturnStatement

This commit is contained in:
Liran Zvibel 2014-04-24 21:11:46 +03:00
parent fb6116c041
commit 2f4d53338e
2 changed files with 8 additions and 2 deletions

View File

@ -2302,6 +2302,8 @@ public:
mixin (visitIfNotNull!(expression));
}
/** */ Expression expression;
/** */ size_t startLocation;
/** */ size_t endLocation;
mixin OpEquals;
}

View File

@ -4425,10 +4425,14 @@ q{(int a, ...)
{
mixin(traceEnterAndExit!(__FUNCTION__));
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!";"))
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;
}