aboutsummaryrefslogtreecommitdiff
path: root/gcc/d/dmd/parse.d
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/d/dmd/parse.d')
-rw-r--r--gcc/d/dmd/parse.d11
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_)