aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaTemplateInstantiate.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Sema/SemaTemplateInstantiate.cpp')
-rw-r--r--lib/Sema/SemaTemplateInstantiate.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/Sema/SemaTemplateInstantiate.cpp b/lib/Sema/SemaTemplateInstantiate.cpp
index 7b2d24b5bf..b7f0bbc923 100644
--- a/lib/Sema/SemaTemplateInstantiate.cpp
+++ b/lib/Sema/SemaTemplateInstantiate.cpp
@@ -1071,6 +1071,25 @@ Sema::InstantiateClassTemplateSpecialization(
if (New->isInvalidDecl())
Invalid = true;
}
+ } else if (StaticAssertDecl *SA = dyn_cast<StaticAssertDecl>(*Member)) {
+ Expr *AssertExpr = SA->getAssertExpr();
+
+ OwningExprResult InstantiatedAssertExpr
+ = InstantiateExpr(AssertExpr,
+ ClassTemplateSpec->getTemplateArgs(),
+ ClassTemplateSpec->getNumTemplateArgs());
+ if (!InstantiatedAssertExpr.isInvalid()) {
+ OwningExprResult Message = Clone(SA->getMessage());
+
+ Decl *New =
+ (Decl *)ActOnStaticAssertDeclaration(SA->getLocation(),
+ move(InstantiatedAssertExpr),
+ move(Message));
+ if (New->isInvalidDecl())
+ Invalid = true;
+
+ } else
+ Invalid = true;
}
}