<div dir="ltr">Hi Hans,<div><br></div><div>Could this go into the stable branch ?</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jan 14, 2017 at 10:11 PM, Argyrios Kyrtzidis 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: akirtzidis<br>
Date: Sun Jan 15 00:11:04 2017<br>
New Revision: 292052<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=292052&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=292052&view=rev</a><br>
Log:<br>
[code-completion] Fix crash when trying to do postfix completion of instance member inside a static function.<br>
<br>
Modified:<br>
    cfe/trunk/lib/Parse/ParseExpr.<wbr>cpp<br>
    cfe/trunk/test/CodeCompletion/<wbr>member-access.cpp<br>
<br>
Modified: cfe/trunk/lib/Parse/ParseExpr.<wbr>cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseExpr.cpp?rev=292052&r1=292051&r2=292052&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/cfe/trunk/lib/Parse/<wbr>ParseExpr.cpp?rev=292052&r1=<wbr>292051&r2=292052&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- cfe/trunk/lib/Parse/ParseExpr.<wbr>cpp (original)<br>
+++ cfe/trunk/lib/Parse/ParseExpr.<wbr>cpp Sun Jan 15 00:11:04 2017<br>
@@ -1652,9 +1652,10 @@ Parser::<wbr>ParsePostfixExpressionSuffix(<wbr>Exp<br>
<br>
       if (Tok.is(tok::code_completion)) {<br>
         // Code completion for a member access expression.<br>
-        Actions.<wbr>CodeCompleteMemberReferenceExp<wbr>r(<br>
-            getCurScope(), LHS.get(), OpLoc, OpKind == tok::arrow,<br>
-            ExprStatementTokLoc == LHS.get()->getLocStart());<br>
+        if (Expr *Base = LHS.get())<br>
+          Actions.<wbr>CodeCompleteMemberReferenceExp<wbr>r(<br>
+              getCurScope(), Base, OpLoc, OpKind == tok::arrow,<br>
+              ExprStatementTokLoc == Base->getLocStart());<br>
<br>
         cutOffParsing();<br>
         return ExprError();<br>
<br>
Modified: cfe/trunk/test/CodeCompletion/<wbr>member-access.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeCompletion/member-access.cpp?rev=292052&r1=292051&r2=292052&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/cfe/trunk/test/<wbr>CodeCompletion/member-access.<wbr>cpp?rev=292052&r1=292051&r2=<wbr>292052&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- cfe/trunk/test/CodeCompletion/<wbr>member-access.cpp (original)<br>
+++ cfe/trunk/test/CodeCompletion/<wbr>member-access.cpp Sun Jan 15 00:11:04 2017<br>
@@ -27,6 +27,16 @@ public:<br>
<br>
 void test(const Proxy &p) {<br>
   p-><br>
+}<br>
+<br>
+struct Test1 {<br>
+  Base1 b;<br>
+<br>
+  static void sfunc() {<br>
+    b. // expected-error {{invalid use of member 'b' in static member function}}<br>
+  }<br>
+};<br>
+<br>
   // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:29:6 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s<br>
   // CHECK-CC1: Base1 : Base1::<br>
   // CHECK-CC1: member1 : [#int#][#Base1::#]member1<br>
@@ -39,4 +49,6 @@ void test(const Proxy &p) {<br>
   // CHECK-CC1: memfun1 (Hidden) : [#void#]Base2::memfun1(<#int#><wbr>)<br>
   // CHECK-CC1: memfun2 : [#void#][#Base3::#]memfun2(<#<wbr>int#>)<br>
   // CHECK-CC1: memfun3 : [#int#]memfun3(<#int#>)<br>
-<br>
+<br>
+// Make sure this doesn't crash<br>
+// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:36:7 %s -verify<br>
<br>
<br>
______________________________<wbr>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org">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>