diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2018-08-08 00:42:42 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2018-08-08 00:42:42 +0000 |
commit | 2e34bbd8e842c6c0fb5adaaafcbf90d971d3c114 (patch) | |
tree | 2194c4084a36bd9e0e7a042ec66ce133fbf6226e /clang/lib/Sema/SemaExprCXX.cpp | |
parent | ed2f9a6094ef2679fc8d9d70001c4f5b111c738d (diff) | |
download | bcm5719-llvm-2e34bbd8e842c6c0fb5adaaafcbf90d971d3c114.tar.gz bcm5719-llvm-2e34bbd8e842c6c0fb5adaaafcbf90d971d3c114.zip |
PR38286: Don't crash when attempting to define a constructor for an
incomplete class template.
llvm-svn: 339210
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 22f13280c38..c851a81af46 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -113,9 +113,15 @@ ParsedType Sema::getConstructorName(IdentifierInfo &II, break; } } - if (!InjectedClassName && CurClass->isInvalidDecl()) + if (!InjectedClassName) { + if (!CurClass->isInvalidDecl()) { + // FIXME: RequireCompleteDeclContext doesn't check dependent contexts + // properly. Work around it here for now. + Diag(SS.getLastQualifierNameLoc(), + diag::err_incomplete_nested_name_spec) << CurClass << SS.getRange(); + } return ParsedType(); - assert(InjectedClassName && "couldn't find injected class name"); + } QualType T = Context.getTypeDeclType(InjectedClassName); DiagnoseUseOfDecl(InjectedClassName, NameLoc); |