More complete fix for #177
This commit is contained in:
parent
30b586c3ee
commit
9bc65555c8
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue