summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaCXXScopeSpec.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-03-23 03:33:32 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-03-23 03:33:32 +0000
commit7d137e3b98f4503e3a49b1d68fd552647f22fa33 (patch)
tree58e15e0a2bd8d433611ea1a50df00ac907e5fb9a /clang/lib/Sema/SemaCXXScopeSpec.cpp
parenta754a03550003a0f2b93d57e0854be5939814c33 (diff)
downloadbcm5719-llvm-7d137e3b98f4503e3a49b1d68fd552647f22fa33.tar.gz
bcm5719-llvm-7d137e3b98f4503e3a49b1d68fd552647f22fa33.zip
Support for definitions of member enumerations of class templates outside the
class template's definition, and for explicit specializations of such enum members. llvm-svn: 153304
Diffstat (limited to 'clang/lib/Sema/SemaCXXScopeSpec.cpp')
-rw-r--r--clang/lib/Sema/SemaCXXScopeSpec.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaCXXScopeSpec.cpp b/clang/lib/Sema/SemaCXXScopeSpec.cpp
index 5e6c27b15d5..5a0fceca20d 100644
--- a/clang/lib/Sema/SemaCXXScopeSpec.cpp
+++ b/clang/lib/Sema/SemaCXXScopeSpec.cpp
@@ -246,10 +246,14 @@ bool Sema::RequireCompleteDeclContext(CXXScopeSpec &SS,
EnumDecl *ED = enumType->getDecl();
if (EnumDecl *Pattern = ED->getInstantiatedFromMemberEnum()) {
MemberSpecializationInfo *MSI = ED->getMemberSpecializationInfo();
- if (MSI->getTemplateSpecializationKind() != TSK_ExplicitSpecialization)
- return InstantiateEnum(loc, ED, Pattern,
- getTemplateInstantiationArgs(ED),
- TSK_ImplicitInstantiation);
+ if (MSI->getTemplateSpecializationKind() != TSK_ExplicitSpecialization) {
+ if (InstantiateEnum(loc, ED, Pattern, getTemplateInstantiationArgs(ED),
+ TSK_ImplicitInstantiation)) {
+ SS.SetInvalid(SS.getRange());
+ return true;
+ }
+ return false;
+ }
}
Diag(loc, diag::err_incomplete_nested_name_spec)
OpenPOWER on IntegriCloud