<div dir="ltr">Hans, can you please merge this to the LLVM 5.0 branch?<div><br></div><div>AFAIK It's a recent regression that should get fixed in LLVM 5.0.</div><div><br></div><div>Cheers,</div><div>Alex<br><div class="gmail_extra"><br><div class="gmail_quote">On 21 July 2017 at 10:24, Ilya Biryukov via cfe-commits <span dir="ltr"><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: ibiryukov<br>
Date: Fri Jul 21 02:24:00 2017<br>
New Revision: 308722<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=308722&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=308722&view=rev</a><br>
Log:<br>
Fixed failing assert in code completion.<br>
<br>
Summary:<br>
The code was accessing uninstantiated default argument.<br>
This resulted in failing assertion at ParmVarDecl::getDefaultArg().<br>
<br>
Reviewers: erikjv, klimek, bkramer, krasimir<br>
<br>
Reviewed By: krasimir<br>
<br>
Subscribers: cfe-commits<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D35682" rel="noreferrer" target="_blank">https://reviews.llvm.org/D3568<wbr>2</a><br>
<br>
Added:<br>
    cfe/trunk/test/CodeCompletion/<wbr>uninstantiated_params.cpp<br>
Modified:<br>
    cfe/trunk/lib/Sema/SemaCodeCom<wbr>plete.cpp<br>
<br>
Modified: cfe/trunk/lib/Sema/SemaCodeCom<wbr>plete.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCodeComplete.cpp?rev=308722&r1=308721&r2=308722&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/cfe/trunk/lib/Sema/SemaC<wbr>odeComplete.cpp?rev=308722&r1=<wbr>308721&r2=308722&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- cfe/trunk/lib/Sema/SemaCodeCom<wbr>plete.cpp (original)<br>
+++ cfe/trunk/lib/Sema/SemaCodeCom<wbr>plete.cpp Fri Jul 21 02:24:00 2017<br>
@@ -2401,10 +2401,7 @@ formatBlockPlaceholder(const PrintingPol<br>
 static std::string GetDefaultValueString(const ParmVarDecl *Param,<br>
                                          const SourceManager &SM,<br>
                                          const LangOptions &LangOpts) {<br>
-  const Expr *defaultArg = Param->getDefaultArg();<br>
-  if (!defaultArg)<br>
-    return "";<br>
-  const SourceRange SrcRange = defaultArg->getSourceRange();<br>
+  const SourceRange SrcRange = Param->getDefaultArgRange();<br>
   CharSourceRange CharSrcRange = CharSourceRange::getTokenRange<wbr>(SrcRange);<br>
   bool Invalid = CharSrcRange.isInvalid();<br>
   if (Invalid)<br>
<br>
Added: cfe/trunk/test/CodeCompletion/<wbr>uninstantiated_params.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeCompletion/uninstantiated_params.cpp?rev=308722&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/cfe/trunk/test/CodeCompl<wbr>etion/uninstantiated_params.<wbr>cpp?rev=308722&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- cfe/trunk/test/CodeCompletion/<wbr>uninstantiated_params.cpp (added)<br>
+++ cfe/trunk/test/CodeCompletion/<wbr>uninstantiated_params.cpp Fri Jul 21 02:24:00 2017<br>
@@ -0,0 +1,13 @@<br>
+template <class T><br>
+struct unique_ptr {<br>
+  typedef T* pointer;<br>
+<br>
+  void reset(pointer ptr = pointer());<br>
+};<br>
+<br>
+void test() {<br>
+  unique_ptr<int> x;<br>
+  x.<br>
+  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:10:5 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s<br>
+  // CHECK-CC1: [#void#]reset({#<#unique_ptr<i<wbr>nt>::pointer ptr = pointer()#>#})<br>
+}<br>
<br>
<br>
______________________________<wbr>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div></div></div>