From: Reid Kleckner Date: Thu, 18 Dec 2014 18:17:42 +0000 (+0000) Subject: Revert "Don't build invalid AST nodes during recovery" X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9e8f0d3f6a9745e556dfba30457dff380b22bd15;p=clang Revert "Don't build invalid AST nodes during recovery" This reverts commit r224451. It caused us to reject some valid existing code. This code appears to run in non-error cases as well as error cases. If the scope of a DependentScopeDeclRefExpr is still incomplete it probably means we still have more instantiation to do. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224526 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaTemplate.cpp b/lib/Sema/SemaTemplate.cpp index ce364d0fae..c760851603 100644 --- a/lib/Sema/SemaTemplate.cpp +++ b/lib/Sema/SemaTemplate.cpp @@ -2874,7 +2874,7 @@ Sema::BuildQualifiedTemplateIdExpr(CXXScopeSpec &SS, if (!(DC = computeDeclContext(SS, false)) || DC->isDependentContext() || RequireCompleteDeclContext(SS, DC)) - return ExprError(); + return BuildDependentDeclRefExpr(SS, TemplateKWLoc, NameInfo, TemplateArgs); bool MemberOfUnknownSpecialization; LookupResult R(*this, NameInfo, LookupOrdinaryName); diff --git a/test/SemaTemplate/instantiate-dependent-nested-name.cpp b/test/SemaTemplate/instantiate-dependent-nested-name.cpp index cb2c946ede..06a1ed4119 100644 --- a/test/SemaTemplate/instantiate-dependent-nested-name.cpp +++ b/test/SemaTemplate/instantiate-dependent-nested-name.cpp @@ -1,19 +1,8 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s - +// expected-no-diagnostics // PR4382 template struct X { static const T A = 1; }; template::A> struct Y { typedef T A; }; template struct Z { typedef typename Y::A A; }; extern int x; extern Z::A x; - -namespace pr21964 { -struct H; -template struct T { - struct A; // expected-note {{member is declared here}} - static void B() { - A::template N; // expected-error {{implicit instantiation of undefined member 'pr21964::T::A'}} - } -}; -template struct T; // expected-note {{requested here}} -}