diff options
Diffstat (limited to 'gcc/d/dmd/parse.d')
-rw-r--r-- | gcc/d/dmd/parse.d | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/d/dmd/parse.d b/gcc/d/dmd/parse.d index eb5e694..4e3fd53 100644 --- a/gcc/d/dmd/parse.d +++ b/gcc/d/dmd/parse.d @@ -5877,7 +5877,8 @@ LagainStc: { if (isDeclaration(&token, NeedDeclaratorId.mustIfDstyle, TOK.reserved, null)) goto Ldeclaration; - if (peekNext() == TOK.leftParenthesis) + const tv = peekNext(); + if (tv == TOK.leftParenthesis) { // mixin(string) AST.Expression e = parseAssignExp(); @@ -5893,6 +5894,14 @@ LagainStc: } break; } + else if (tv == TOK.template_) + { + // mixin template + nextToken(); + AST.Dsymbol d = parseTemplateDeclaration(true); + s = new AST.ExpStatement(loc, d); + break; + } AST.Dsymbol d = parseMixin(); s = new AST.ExpStatement(loc, d); if (flags & ParseStatementFlags.scope_) |