mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-24 22:08:57 -04:00

Summary: The example that was broken before (^ designates completion points): class Foo { Foo() : fie^ld^() {} // no completions were provided here. int field; }; To fix it we don't cut off lexing after an identifier followed by code completion token is lexed. Instead we skip the rest of identifier and continue lexing. This is consistent with behavior of completion when completion token is right before the identifier. Reviewers: sammccall, aaron.ballman, bkramer, sepavloff, arphaman, rsmith Reviewed By: aaron.ballman Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D44932 llvm-svn: 330833
67 lines
3.1 KiB
C++
67 lines
3.1 KiB
C++
struct Base1 {
|
|
Base1() : {}
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:2:12 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:2:12 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
|
|
// CHECK-CC1: COMPLETION: Pattern : member1(<#args#>)
|
|
// CHECK-CC1: COMPLETION: Pattern : member2(<#args#>
|
|
|
|
Base1(int) : member1(123), {}
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:8:30 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:8:30 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
|
|
// CHECK-CC2-NOT: COMPLETION: Pattern : member1(<#args#>)
|
|
// CHECK-CC2: COMPLETION: Pattern : member2(<#args#>
|
|
|
|
int member1;
|
|
float member2;
|
|
};
|
|
|
|
struct Derived : public Base1 {
|
|
Derived();
|
|
Derived(int);
|
|
Derived(float);
|
|
int deriv1;
|
|
};
|
|
|
|
Derived::Derived() : {}
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:25:22 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:25:22 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s
|
|
// CHECK-CC3: COMPLETION: Pattern : Base1(<#args#>)
|
|
// CHECK-CC3: COMPLETION: Pattern : deriv1(<#args#>)
|
|
|
|
Derived::Derived(int) try : {
|
|
} catch (...) {
|
|
}
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:31:29 %s -o - | FileCheck -check-prefix=CHECK-CC4 %s
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:31:29 %s -o - | FileCheck -check-prefix=CHECK-CC4 %s
|
|
// CHECK-CC4: COMPLETION: Pattern : Base1(<#args#>)
|
|
// CHECK-CC4: COMPLETION: Pattern : deriv1(<#args#>)
|
|
|
|
Derived::Derived(float) try : Base1(),
|
|
{
|
|
} catch (...) {
|
|
}
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:39:39 %s -o - | FileCheck -check-prefix=CHECK-CC5 %s
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:39:39 %s -o - | FileCheck -check-prefix=CHECK-CC5 %s
|
|
// CHECK-CC5-NOT: COMPLETION: Pattern : Base1(<#args#>)
|
|
// CHECK-CC5: COMPLETION: Pattern : deriv1(<#args#>)
|
|
|
|
struct A {
|
|
A() : , member2() {}
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:49:9 %s -o - | FileCheck -check-prefix=CHECK-CC6 %s
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:49:9 %s -o - | FileCheck -check-prefix=CHECK-CC6 %s
|
|
// CHECK-CC6: COMPLETION: Pattern : member1(<#args#>
|
|
int member1, member2;
|
|
};
|
|
|
|
struct B {
|
|
B() : member2() {}
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:57:9 %s -o - | FileCheck -check-prefix=CHECK-CC7 %s
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:57:9 %s -o - | FileCheck -check-prefix=CHECK-CC7 %s
|
|
// CHECK-CC7: COMPLETION: Pattern : member1(<#args#>
|
|
// Check in the middle and at the end of identifier too.
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:57:13 %s -o - | FileCheck -check-prefix=CHECK-CC8 %s
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:57:16 %s -o - | FileCheck -check-prefix=CHECK-CC8 %s
|
|
// CHECK-CC8: COMPLETION: Pattern : member2(<#args#>
|
|
int member1, member2;
|
|
};
|