<div dir="ltr">Bill,<div><br></div><div>I'm fairly certain this is a candidate for the 3.4 release branch as it is a 2-line/1-statement fix for the crasher reported in PR18213.</div><div><br></div><div>Cheers,</div><div>
Kaelyn</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Dec 16, 2013 at 11:19 AM, Kaelyn Uhrain <span dir="ltr"><<a href="mailto:rikka@google.com" target="_blank">rikka@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rikka<br>
Date: Mon Dec 16 13:19:18 2013<br>
New Revision: 197409<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=197409&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=197409&view=rev</a><br>
Log:<br>
Make Sema::BuildCXXNestedNameSpecifier correctly clear the previous<br>
CXXScopeSpec when necessary while performing typo correction. This fixes<br>
the crash reported in PR18213 (the problem existed since r185487, and<br>
r193020 made it easier to hit).<br>
<br>
Modified:<br>
    cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp<br>
    cfe/trunk/test/SemaCXX/typo-correction-pt2.cpp<br>
<br>
Modified: cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp?rev=197409&r1=197408&r2=197409&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp?rev=197409&r1=197408&r2=197409&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp (original)<br>
+++ cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp Mon Dec 16 13:19:18 2013<br>
@@ -497,6 +497,8 @@ bool Sema::BuildCXXNestedNameSpecifier(S<br>
         bool DroppedSpecifier =<br>
             Corrected.WillReplaceSpecifier() &&<br>
             Name.getAsString() == Corrected.getAsString(getLangOpts());<br>
+        if (DroppedSpecifier)<br>
+          SS.clear();<br>
         diagnoseTypo(Corrected, PDiag(diag::err_no_member_suggest)<br>
                                   << Name << LookupCtx << DroppedSpecifier<br>
                                   << SS.getRange());<br>
<br>
Modified: cfe/trunk/test/SemaCXX/typo-correction-pt2.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/typo-correction-pt2.cpp?rev=197409&r1=197408&r2=197409&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/typo-correction-pt2.cpp?rev=197409&r1=197408&r2=197409&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/test/SemaCXX/typo-correction-pt2.cpp (original)<br>
+++ cfe/trunk/test/SemaCXX/typo-correction-pt2.cpp Mon Dec 16 13:19:18 2013<br>
@@ -181,3 +181,21 @@ void test() {<br>
   MessageHeaders::ParseMessageHeaders(5, 4); // expected-error {{no member named 'ParseMessageHeaders' in 'fix_class_name_qualifier::MessageHeaders'; did you mean 'MessageUtils::ParseMessageHeaders'?}}<br>

 }<br>
 }<br>
+<br>
+namespace PR18213 {  // expected-note {{'PR18213' declared here}}<br>
+struct WrapperInfo {<br>
+  int i;<br>
+};<br>
+<br>
+template <typename T> struct Wrappable {<br>
+  static WrapperInfo kWrapperInfo;<br>
+};<br>
+<br>
+// Note the space before "::PR18213" is intended and needed, as it highlights<br>
+// the actual typo, which is the leading "::".<br>
+// TODO: Suggest removing the "::" from "::PR18213" (the right correction)<br>
+// instead of incorrectly suggesting dropping "PR18213::WrapperInfo::".<br>
+template <><br>
+PR18213::WrapperInfo ::PR18213::Wrappable<int>::kWrapperInfo = { 0 };  // expected-error {{no member named 'PR18213' in 'PR18213::WrapperInfo'; did you mean simply 'PR18213'?}} \<br>
+                                                                       // expected-error {{C++ requires a type specifier for all declarations}}<br>
+}<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>