More complete fix for #177

This commit is contained in:
Hackerpilot 2015-01-03 18:44:20 -08:00
parent 30b586c3ee
commit 9bc65555c8
1 changed files with 13 additions and 8 deletions

View File

@ -949,6 +949,17 @@ T getExpression(T)(T beforeTokens)
case tok!"dstringLiteral": case tok!"dstringLiteral":
}; };
enum EXPRESSION_LOOP_BREAK = q{
if (i + 1 < beforeTokens.length) switch (beforeTokens[i + 1].type)
{
mixin (TYPE_IDENT_AND_LITERAL_CASES);
i++;
break expressionLoop;
default:
break;
}
};
if (beforeTokens.length == 0) if (beforeTokens.length == 0)
return beforeTokens[0 .. 0]; return beforeTokens[0 .. 0];
size_t i = beforeTokens.length - 1; size_t i = beforeTokens.length - 1;
@ -964,14 +975,7 @@ T getExpression(T)(T beforeTokens)
case tok!"import": case tok!"import":
break expressionLoop; break expressionLoop;
mixin (TYPE_IDENT_AND_LITERAL_CASES); mixin (TYPE_IDENT_AND_LITERAL_CASES);
if (i + 1 < beforeTokens.length) switch (beforeTokens[i + 1].type) mixin (EXPRESSION_LOOP_BREAK);
{
mixin (TYPE_IDENT_AND_LITERAL_CASES);
i++;
break expressionLoop;
default:
break;
}
if (i > 0 && beforeTokens[i - 1] == tok!"!") if (i > 0 && beforeTokens[i - 1] == tok!"!")
{ {
sliceEnd -= 2; sliceEnd -= 2;
@ -988,6 +992,7 @@ T getExpression(T)(T beforeTokens)
open = tok!"]"; open = tok!"]";
close = tok!"["; close = tok!"[";
skip: skip:
mixin (EXPRESSION_LOOP_BREAK);
auto bookmark = i; auto bookmark = i;
int depth = 1; int depth = 1;
do do