r308722 - Fixed failing assert in code completion.

Alex L via cfe-commits cfe-commits at lists.llvm.org
Tue Aug 8 05:20:55 PDT 2017


Ping?

On 21 July 2017 at 10:44, Alex L <arphaman at gmail.com> wrote:

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


More information about the cfe-commits mailing list