diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-03-23 15:26:55 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-03-23 15:26:55 +0000 |
commit | 9de672f6eb4a1f076163fd826418ca179e1341ec (patch) | |
tree | 3cd12bc884e14ec8ed8dfba0c5b0d835dae82933 | |
parent | b4e4c96b9e717ae747f8a22b432695d833b4c0d6 (diff) |
When recovering from a qualified typedef name, don't clear out the
DeclContext because we don't want a NULL DeclContext. Instead, use the
current context.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99281 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 3 | ||||
-rw-r--r-- | test/SemaCXX/qual-id-test.cpp | 9 |
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index aaf39ef1f9..bf92ef829b 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -2131,7 +2131,8 @@ Sema::ActOnTypedefDeclarator(Scope* S, Declarator& D, DeclContext* DC, << D.getCXXScopeSpec().getRange(); D.setInvalidType(); // Pretend we didn't see the scope specifier. - DC = 0; + DC = CurContext; + Previous.clear(); } if (getLangOptions().CPlusPlus) { diff --git a/test/SemaCXX/qual-id-test.cpp b/test/SemaCXX/qual-id-test.cpp index 54d41b81ca..4846e72e59 100644 --- a/test/SemaCXX/qual-id-test.cpp +++ b/test/SemaCXX/qual-id-test.cpp @@ -138,3 +138,12 @@ struct a { a a; int a::sa = a.a; // expected-error {{invalid use of nonstatic data member 'a'}} + + +namespace PR6645 { + typedef int foo; + namespace Inner { + typedef int PR6645::foo; // expected-error{{typedef declarator cannot be qualified}} \ + // expected-error{{definition or redeclaration of 'foo' not in a namespace enclosing 'PR6645'}} + } +} |