diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-03-23 03:33:32 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-03-23 03:33:32 +0000 |
| commit | 7d137e3b98f4503e3a49b1d68fd552647f22fa33 (patch) | |
| tree | 58e15e0a2bd8d433611ea1a50df00ac907e5fb9a /clang/lib/Sema/SemaCXXScopeSpec.cpp | |
| parent | a754a03550003a0f2b93d57e0854be5939814c33 (diff) | |
| download | bcm5719-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.cpp | 12 |
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) |

