<div dir="ltr">The new test fails for me on Windows:<div><br></div><div><div>Command 6: "D:/src/llvm/build/./bin\c-index-test.EXE" "-code-completion-at=D:\src\llvm\tools\clang\test\Index\complete-ctor-inits.cpp:22:10" "D:\src\llvm\tools\clang\test\Index\complete-ctor-inits.cpp"</div><div>Command 6 Result: 0</div><div>Command 6 Output:</div><div><br></div><div><br></div><div>Command 6 Stderr:</div><div>D:\src\llvm\tools\clang\test\Index\complete-ctor-inits.cpp:29:8: error: expected '{'</div><div>Number FIX-ITs = 0</div><div><br></div><div><br></div><div>Command 7: "D:/src/llvm/build/./bin\FileCheck.EXE" "-check-prefix=CHECK-CC4" "D:\src\llvm\tools\clang\test\Index\complete-ctor-inits.cpp"</div><div>Command 7 Result: 1</div><div>Command 7 Output:</div><div><br></div><div><br></div><div>Command 7 Stderr:</div><div>D:\src\llvm\tools\clang\test\Index\complete-ctor-inits.cpp:55:15: error: expected string not found in input</div><div>// CHECK-CC4: MemberRef:{TypedText a}{LeftParen (}{Placeholder args}{RightParen )} (7)</div><div>              ^</div><div><stdin>:1:1: note: scanning from here</div><div>Completion contexts:</div><div>^</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 9, 2015 at 8:31 AM, Benjamin Kramer <span dir="ltr"><<a href="mailto:benny.kra@googlemail.com" target="_blank">benny.kra@googlemail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: d0k<br>
Date: Thu Jul  9 10:31:10 2015<br>
New Revision: 241811<br>
<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D241811-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=KYEp6yncd_dNnEpN9NM_opnnyOzsFfRsxFJcbOoP-3k&s=uL3vr0MgOcin4cVLRrcKpI7k6YEGfoCSn3JJCllZuG4&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=241811&view=rev</a><br>
Log:<br>
[CodeCompletion] Don't crash on member inits of templated constructors.<br>
<br>
Also fixes a crash (on invalid) member functions with a colon<br>
initializer. PR23948.<br>
<br>
Modified:<br>
    cfe/trunk/lib/Sema/SemaCodeComplete.cpp<br>
    cfe/trunk/test/Index/complete-ctor-inits.cpp<br>
<br>
Modified: cfe/trunk/lib/Sema/SemaCodeComplete.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaCodeComplete.cpp-3Frev-3D241811-26r1-3D241810-26r2-3D241811-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=KYEp6yncd_dNnEpN9NM_opnnyOzsFfRsxFJcbOoP-3k&s=MrRBNxfLMUQnhAAIcs6-95cynAXdEPkQ7TK3_uflA_M&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCodeComplete.cpp?rev=241811&r1=241810&r2=241811&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Sema/SemaCodeComplete.cpp (original)<br>
+++ cfe/trunk/lib/Sema/SemaCodeComplete.cpp Thu Jul  9 10:31:10 2015<br>
@@ -4409,9 +4409,12 @@ void Sema::CodeCompleteOperatorName(Scop<br>
 void Sema::CodeCompleteConstructorInitializer(<br>
                               Decl *ConstructorD,<br>
                               ArrayRef <CXXCtorInitializer *> Initializers) {<br>
-  PrintingPolicy Policy = getCompletionPrintingPolicy(*this);<br>
-  CXXConstructorDecl *Constructor<br>
-    = static_cast<CXXConstructorDecl *>(ConstructorD);<br>
+  if (!ConstructorD)<br>
+    return;<br>
+<br>
+  AdjustDeclIfTemplate(ConstructorD);<br>
+<br>
+  CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(ConstructorD);<br>
   if (!Constructor)<br>
     return;<br>
<br>
@@ -4435,6 +4438,7 @@ void Sema::CodeCompleteConstructorInitia<br>
   // Add completions for base classes.<br>
   CodeCompletionBuilder Builder(Results.getAllocator(),<br>
                                 Results.getCodeCompletionTUInfo());<br>
+  PrintingPolicy Policy = getCompletionPrintingPolicy(*this);<br>
   bool SawLastInitializer = Initializers.empty();<br>
   CXXRecordDecl *ClassDecl = Constructor->getParent();<br>
   for (const auto &Base : ClassDecl->bases()) {<br>
<br>
Modified: cfe/trunk/test/Index/complete-ctor-inits.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Index_complete-2Dctor-2Dinits.cpp-3Frev-3D241811-26r1-3D241810-26r2-3D241811-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=KYEp6yncd_dNnEpN9NM_opnnyOzsFfRsxFJcbOoP-3k&s=UFg1v9wvt6kjawb32rQk5uv3BO8B0yqA5O9F2i8p9GI&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/complete-ctor-inits.cpp?rev=241811&r1=241810&r2=241811&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Index/complete-ctor-inits.cpp (original)<br>
+++ cfe/trunk/test/Index/complete-ctor-inits.cpp Thu Jul  9 10:31:10 2015<br>
@@ -17,6 +17,18 @@ struct Z : public X<int>, public Y {<br>
<br>
 Z::Z() : ::X<int>(0), Virt(), b(), c() { }<br>
<br>
+struct PR23948 {<br>
+  template<class size> PR23948()<br>
+        :<br>
+  {}<br>
+<br>
+  template<class size> void invalid()<br>
+        :<br>
+  {}<br>
+<br>
+  int a;<br>
+};<br>
+<br>
 // RUN: c-index-test -code-completion-at=%s:18:10 %s | FileCheck -check-prefix=CHECK-CC1 %s<br>
 // CHECK-CC1: MemberRef:{TypedText a}{LeftParen (}{Placeholder args}{RightParen )} (35)<br>
 // CHECK-CC1: MemberRef:{TypedText b}{LeftParen (}{Placeholder args}{RightParen )} (35)<br>
@@ -38,3 +50,7 @@ Z::Z() : ::X<int>(0), Virt(), b(), c() {<br>
 // CHECK-CC3: MemberRef:{TypedText c}{LeftParen (}{Placeholder args}{RightParen )} (7)<br>
 // CHECK-CC3-NOT: NotImplemented:{TypedText Virt}{LeftParen (}{Placeholder args}{RightParen )}<br>
 // CHECK-CC3: NotImplemented:{TypedText Y}{LeftParen (}{Placeholder args}{RightParen )} (35)<br>
+<br>
+// RUN: c-index-test -code-completion-at=%s:22:10 %s | FileCheck -check-prefix=CHECK-CC4 %s<br>
+// CHECK-CC4: MemberRef:{TypedText a}{LeftParen (}{Placeholder args}{RightParen )} (7)<br>
+// RUN: c-index-test -code-completion-at=%s:26:10 %s<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" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>