aboutsummaryrefslogtreecommitdiff
path: root/gcc/d/dmd/templateparamsem.d
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/d/dmd/templateparamsem.d')
-rw-r--r--gcc/d/dmd/templateparamsem.d9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/d/dmd/templateparamsem.d b/gcc/d/dmd/templateparamsem.d
index e093260..e79a9ec 100644
--- a/gcc/d/dmd/templateparamsem.d
+++ b/gcc/d/dmd/templateparamsem.d
@@ -73,6 +73,15 @@ private extern (C++) final class TemplateParameterSemanticVisitor : Visitor
result = !(ttp.specType && isError(ttp.specType));
}
+ override void visit(TemplateThisParameter ttp)
+ {
+ import dmd.errors;
+
+ if (!sc.getStructClassScope())
+ error(ttp.loc, "cannot use `this` outside an aggregate type");
+ visit(cast(TemplateTypeParameter)ttp);
+ }
+
override void visit(TemplateValueParameter tvp)
{
tvp.valType = tvp.valType.typeSemantic(tvp.loc, sc);