Skip to content

Commit

Permalink
[CodeComplete] Generate completion fix-its for C code as well
Browse files Browse the repository at this point in the history
Current completion fix-its approach does not provide OtherOpBase for C code.
But we can easily proceed in this case taking the original Base type.

Differential Revision: https://reviews.llvm.org/D52261

llvm-svn: 342721
  • Loading branch information
Ivan Donchevskii committed Sep 21, 2018
1 parent b52bd9e commit 60a16ef
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
2 changes: 2 additions & 0 deletions clang/lib/Parse/ParseExpr.cpp
Expand Up @@ -1766,6 +1766,8 @@ Parser::ParsePostfixExpressionSuffix(ExprResult LHS) {

Expr *Base = LHS.get();
Expr *CorrectedBase = CorrectedLHS.get();
if (!CorrectedBase && !getLangOpts().CPlusPlus)
CorrectedBase = Base;

// Code completion for a member access expression.
Actions.CodeCompleteMemberReferenceExpr(
Expand Down
19 changes: 19 additions & 0 deletions clang/test/CodeCompletion/member-access.c
Expand Up @@ -10,3 +10,22 @@ void test(struct Point *p) {
// CHECK-CC1: x
// CHECK-CC1: y
// CHECK-CC1: z
}

struct Point2 {
float x;
};

void test2(struct Point2 p) {
p->
}

void test3(struct Point2 *p) {
p.
}

// RUN: %clang_cc1 -fsyntax-only -code-completion-with-fixits -code-completion-at=%s:20:6 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
// CHECK-CC2: x (requires fix-it: {20:4-20:6} to ".")

// RUN: %clang_cc1 -fsyntax-only -code-completion-with-fixits -code-completion-at=%s:24:5 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s
// CHECK-CC3: x (requires fix-it: {24:4-24:5} to "->")

0 comments on commit 60a16ef

Please sign in to comment.