r292052 - [code-completion] Fix crash when trying to do postfix completion of instance member inside a static function.
Argyrios Kyrtzidis via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 17 17:11:57 PST 2017
Thank you!
> On Jan 17, 2017, at 4:35 PM, Hans Wennborg <hans at chromium.org> wrote:
>
> Merged in r292313.
>
> Thanks,
> Hans
>
> On Tue, Jan 17, 2017 at 8:56 AM, Argyrios Kyrtzidis <akyrtzi at gmail.com> wrote:
>> Hi Hans,
>>
>> Could this go into the stable branch ?
>>
>> On Sat, Jan 14, 2017 at 10:11 PM, Argyrios Kyrtzidis via cfe-commits
>> <cfe-commits at lists.llvm.org> wrote:
>>>
>>> Author: akirtzidis
>>> Date: Sun Jan 15 00:11:04 2017
>>> New Revision: 292052
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=292052&view=rev
>>> Log:
>>> [code-completion] Fix crash when trying to do postfix completion of
>>> instance member inside a static function.
>>>
>>> Modified:
>>> cfe/trunk/lib/Parse/ParseExpr.cpp
>>> cfe/trunk/test/CodeCompletion/member-access.cpp
>>>
>>> Modified: cfe/trunk/lib/Parse/ParseExpr.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseExpr.cpp?rev=292052&r1=292051&r2=292052&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/lib/Parse/ParseExpr.cpp (original)
>>> +++ cfe/trunk/lib/Parse/ParseExpr.cpp Sun Jan 15 00:11:04 2017
>>> @@ -1652,9 +1652,10 @@ Parser::ParsePostfixExpressionSuffix(Exp
>>>
>>> if (Tok.is(tok::code_completion)) {
>>> // Code completion for a member access expression.
>>> - Actions.CodeCompleteMemberReferenceExpr(
>>> - getCurScope(), LHS.get(), OpLoc, OpKind == tok::arrow,
>>> - ExprStatementTokLoc == LHS.get()->getLocStart());
>>> + if (Expr *Base = LHS.get())
>>> + Actions.CodeCompleteMemberReferenceExpr(
>>> + getCurScope(), Base, OpLoc, OpKind == tok::arrow,
>>> + ExprStatementTokLoc == Base->getLocStart());
>>>
>>> cutOffParsing();
>>> return ExprError();
>>>
>>> Modified: cfe/trunk/test/CodeCompletion/member-access.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeCompletion/member-access.cpp?rev=292052&r1=292051&r2=292052&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/test/CodeCompletion/member-access.cpp (original)
>>> +++ cfe/trunk/test/CodeCompletion/member-access.cpp Sun Jan 15 00:11:04
>>> 2017
>>> @@ -27,6 +27,16 @@ public:
>>>
>>> void test(const Proxy &p) {
>>> p->
>>> +}
>>> +
>>> +struct Test1 {
>>> + Base1 b;
>>> +
>>> + static void sfunc() {
>>> + b. // expected-error {{invalid use of member 'b' in static member
>>> function}}
>>> + }
>>> +};
>>> +
>>> // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:29:6 %s -o - |
>>> FileCheck -check-prefix=CHECK-CC1 %s
>>> // CHECK-CC1: Base1 : Base1::
>>> // CHECK-CC1: member1 : [#int#][#Base1::#]member1
>>> @@ -39,4 +49,6 @@ void test(const Proxy &p) {
>>> // CHECK-CC1: memfun1 (Hidden) : [#void#]Base2::memfun1(<#int#>)
>>> // CHECK-CC1: memfun2 : [#void#][#Base3::#]memfun2(<#int#>)
>>> // CHECK-CC1: memfun3 : [#int#]memfun3(<#int#>)
>>> -
>>> +
>>> +// Make sure this doesn't crash
>>> +// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:36:7 %s -verify
>>>
>>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>>
More information about the cfe-commits
mailing list