diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-04-24 16:38:41 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-04-24 16:38:41 +0000 |
commit | 48c89f4aa708e28310cb0c94b2d9d044b0ab806c (patch) | |
tree | 5eae1b37444f8cc0ed855d1ce1ab7145101f88fa /lib/Sema/SemaCXXScopeSpec.cpp | |
parent | 80971bdba20b5b280a00b7b9829026b33d3206f9 (diff) |
Be more careful around dependent nested-name-specifiers, complaining
when they are not complete (since we could not match them up to
anything) and ensuring that enum parsing can cope with dependent
elaborated-type-specifiers. Fixes PR6915 and PR6649.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102247 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaCXXScopeSpec.cpp')
-rw-r--r-- | lib/Sema/SemaCXXScopeSpec.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/Sema/SemaCXXScopeSpec.cpp b/lib/Sema/SemaCXXScopeSpec.cpp index e9d206e53b..89f8aec6e0 100644 --- a/lib/Sema/SemaCXXScopeSpec.cpp +++ b/lib/Sema/SemaCXXScopeSpec.cpp @@ -235,6 +235,16 @@ bool Sema::RequireCompleteDeclContext(CXXScopeSpec &SS) { return false; DeclContext *DC = computeDeclContext(SS, true); + if (!DC) { + // It's dependent. + assert(isDependentScopeSpecifier(SS) && + "No context for non-dependent scope specifier?"); + Diag(SS.getRange().getBegin(), diag::err_dependent_nested_name_spec) + << SS.getRange(); + SS.setScopeRep(0); + return true; + } + if (TagDecl *Tag = dyn_cast<TagDecl>(DC)) { // If this is a dependent type, then we consider it complete. if (Tag->isDependentContext()) |