diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:02:28 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:02:28 +0000 |
| commit | 7442d6faa2719e4e7d33a7021c406c5a4facd74d (patch) | |
| tree | c72b9241553fc9966179aba84f90f17bfa9235c3 /test/CodeCompletion | |
| parent | b52119637f743680a99710ce5fdb6646da2772af (diff) | |
Notes
Diffstat (limited to 'test/CodeCompletion')
| -rw-r--r-- | test/CodeCompletion/auto_type.c | 5 | ||||
| -rw-r--r-- | test/CodeCompletion/keywords.cpp | 79 | ||||
| -rw-r--r-- | test/CodeCompletion/member-access.cpp | 14 | ||||
| -rw-r--r-- | test/CodeCompletion/ordinary-name-cxx11.cpp | 9 | ||||
| -rw-r--r-- | test/CodeCompletion/pragma-macro-token-caching.c | 18 |
5 files changed, 125 insertions, 0 deletions
diff --git a/test/CodeCompletion/auto_type.c b/test/CodeCompletion/auto_type.c new file mode 100644 index 000000000000..3fcfff0dcfc9 --- /dev/null +++ b/test/CodeCompletion/auto_type.c @@ -0,0 +1,5 @@ +// RUN: %clang_cc1 -code-completion-at=%s:3:1 %s | FileCheck %s +void func() { + +} +// CHECK: COMPLETION: __auto_type diff --git a/test/CodeCompletion/keywords.cpp b/test/CodeCompletion/keywords.cpp new file mode 100644 index 000000000000..6e5824c2f183 --- /dev/null +++ b/test/CodeCompletion/keywords.cpp @@ -0,0 +1,79 @@ +int function(int x) { + return x + 1; +} + +int variable = 0; + +class Class { +public: + Class() { } + + int method(int x) { + return x + 1; + } + + virtual void virtualMethod() { + } + + static void staticMethod() { + } + + static int staticVar; +}; + +class SubClass : public Class { + void virtualMethod() override final { + } +}; + +struct Struct { +}; + +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:1:1 %s | FileCheck --check-prefix=CHECK-TOP-LEVEL %s +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:5:1 %s | FileCheck --check-prefix=CHECK-TOP-LEVEL %s +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:11:1 %s | FileCheck --check-prefix=CHECK-TOP-LEVEL %s +// CHECK-TOP-LEVEL: alignas(<#expression#>) +// CHECK-TOP-LEVEL: constexpr +// CHECK-TOP-LEVEL: static_assert(<#expression#>, <#message#>) +// CHECK-TOP-LEVEL: thread_local +// CHECK-TOP-LEVEL-NOT: final +// CHECK-TOP-LEVEL-NOT: noexcept + +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:1:14 %s | FileCheck --check-prefix=CHECK-PARAM %s +// CHECK-PARAM-NOT: alignas +// CHECK-PARAM-NOT: constexpr +// CHECK-PARAM-NOT: final +// CHECK-PARAM-NOT: thread_local + +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:21:10 %s | FileCheck --check-prefix=CHECK-STATICVAR1 %s +// CHECK-STATICVAR1: constexpr +// CHECK-STATICVAR1: thread_local + +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:7:13 %s | FileCheck --check-prefix=CHECK-CLASS-QUALIFIER %s +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:24:16 %s | FileCheck --check-prefix=CHECK-CLASS-QUALIFIER %s +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:29:15 %s | FileCheck --check-prefix=CHECK-CLASS-QUALIFIER %s +// CHECK-CLASS-QUALIFIER: final + +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:1:21 %s | FileCheck --check-prefix=CHECK-FUNCTION-QUALIFIER %s +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:9:11 %s | FileCheck --check-prefix=CHECK-FUNCTION-QUALIFIER %s +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:18:30 %s | FileCheck --check-prefix=CHECK-FUNCTION-QUALIFIER %s +// CHECK-FUNCTION-QUALIFIER: noexcept +// CHECK-FUNCTION-QUALIFIER-NOT: final +// CHECK-FUNCTION-QUALIFIER-NOT: override + +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:11:21 %s | FileCheck --check-prefix=CHECK-METHOD-QUALIFIER %s +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:15:32 %s | FileCheck --check-prefix=CHECK-METHOD-QUALIFIER %s +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:25:24 %s | FileCheck --check-prefix=CHECK-METHOD-QUALIFIER %s +// CHECK-METHOD-QUALIFIER: final +// CHECK-METHOD-QUALIFIER: noexcept +// CHECK-METHOD-QUALIFIER: override + +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:25:33 %s | FileCheck --check-prefix=CHECK-OVERRIDE-SPECIFIED %s +// CHECK-OVERRIDE-SPECIFIED: final +// CHECK-OVERRIDE-SPECIFIED: noexcept +// CHECK-OVERRIDE-SPECIFIED-NOT: override + +// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:25:39 %s | FileCheck --check-prefix=CHECK-OVERRIDE-FINAL-SPECIFIED %s +// CHECK-OVERRIDE-FINAL-SPECIFIED: noexcept +// CHECK-OVERRIDE-FINAL-SPECIFIED-NOT: final +// CHECK-OVERRIDE-FINAL-SPECIFIED-NOT: override diff --git a/test/CodeCompletion/member-access.cpp b/test/CodeCompletion/member-access.cpp index 8195f764fbb6..66872272ee6d 100644 --- a/test/CodeCompletion/member-access.cpp +++ b/test/CodeCompletion/member-access.cpp @@ -37,6 +37,17 @@ struct Test1 { } }; +struct Foo { + void foo() const; + static void foo(bool); +}; + +struct Bar { + void foo(bool param) { + Foo::foo( );// unresolved member expression with an implicit base + } +}; + // 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 @@ -52,3 +63,6 @@ struct Test1 { // Make sure this doesn't crash // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:36:7 %s -verify + +// Make sure this also doesn't crash +// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:47:14 %s diff --git a/test/CodeCompletion/ordinary-name-cxx11.cpp b/test/CodeCompletion/ordinary-name-cxx11.cpp index 8e6f38322384..34c3bf96a9d5 100644 --- a/test/CodeCompletion/ordinary-name-cxx11.cpp +++ b/test/CodeCompletion/ordinary-name-cxx11.cpp @@ -39,10 +39,12 @@ void foo() { // CHECK-CC1-NEXT: COMPLETION: Pattern : [#size_t#]sizeof(<#expression-or-type#>) // CHECK-CC1-NEXT: COMPLETION: Pattern : [#size_t#]sizeof...(<#parameter-pack#>) // CHECK-CC1-NEXT: COMPLETION: static + // CHECK-CC1-NEXT: COMPLETION: Pattern : static_assert(<#expression#>, <#message#>) // CHECK-CC1-NEXT: COMPLETION: Pattern : static_cast<<#type#>>(<#expression#>) // CHECK-CC1-NEXT: COMPLETION: struct // CHECK-CC1-NEXT: COMPLETION: Pattern : switch(<#condition#>){ // CHECK-CC1: COMPLETION: t : t + // CHECK-CC1-NEXT: COMPLETION: thread_local // CHECK-CC1-NEXT: COMPLETION: Pattern : [#void#]throw <#expression#> // CHECK-CC1-NEXT: COMPLETION: Pattern : [#bool#]true // CHECK-CC1-NEXT: COMPLETION: Pattern : try{<#statements#> @@ -72,6 +74,7 @@ void foo() { // CHECK-CC2-NEXT: COMPLETION: char32 // CHECK-CC2-NEXT: COMPLETION: class // CHECK-CC2-NEXT: COMPLETION: const + // CHECK-CC2-NEXT: COMPLETION: constexpr // CHECK-CC2-NEXT: COMPLETION: Pattern : decltype(<#expression#>) // CHECK-CC2-NEXT: COMPLETION: double // CHECK-CC2-NEXT: COMPLETION: enum @@ -86,10 +89,12 @@ void foo() { // CHECK-CC2-NEXT: COMPLETION: short // CHECK-CC2-NEXT: COMPLETION: signed // CHECK-CC2-NEXT: COMPLETION: static + // CHECK-CC2-NEXT: COMPLETION: Pattern : static_assert(<#expression#>, <#message#>) // CHECK-CC2-NEXT: COMPLETION: struct // CHECK-CC2-NEXT: COMPLETION: t : t // CHECK-CC2-NEXT: COMPLETION: Pattern : template <#declaration#> // CHECK-CC2-NEXT: COMPLETION: Pattern : template<<#parameters#>> + // CHECK-CC2-NEXT: COMPLETION: thread_local // CHECK-CC2-NEXT: COMPLETION: TYPEDEF : TYPEDEF // CHECK-CC2-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#> // CHECK-CC2-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#> @@ -111,6 +116,7 @@ void foo() { // CHECK-CC3-NEXT: COMPLETION: char32_t // CHECK-CC3-NEXT: COMPLETION: class // CHECK-CC3-NEXT: COMPLETION: const + // CHECK-CC3-NEXT: COMPLETION: constexpr // CHECK-CC3-NEXT: COMPLETION: Pattern : decltype(<#expression#>) // CHECK-CC3-NEXT: COMPLETION: double // CHECK-CC3-NEXT: COMPLETION: enum @@ -129,8 +135,10 @@ void foo() { // CHECK-CC3-NEXT: COMPLETION: short // CHECK-CC3-NEXT: COMPLETION: signed // CHECK-CC3-NEXT: COMPLETION: static + // CHECK-CC3-NEXT: COMPLETION: Pattern : static_assert(<#expression#>, <#message#>) // CHECK-CC3-NEXT: COMPLETION: struct // CHECK-CC3-NEXT: COMPLETION: Pattern : template<<#parameters#>> + // CHECK-CC3-NEXT: COMPLETION: thread_local // CHECK-CC3-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#> // CHECK-CC3-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#> // CHECK-CC3-NEXT: COMPLETION: Pattern : typeof <#expression#> @@ -227,6 +235,7 @@ void foo() { // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : [#size_t#]sizeof(<#expression-or-type#>) // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : [#size_t#]sizeof...(<#parameter-pack#>) // CHECK-NO-RTTI-NEXT: COMPLETION: static + // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : static_assert(<#expression#>, <#message#>) // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : static_cast<<#type#>>(<#expression#>) // CHECK-NO-RTTI-NEXT: COMPLETION: struct // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : switch(<#condition#>){ diff --git a/test/CodeCompletion/pragma-macro-token-caching.c b/test/CodeCompletion/pragma-macro-token-caching.c new file mode 100644 index 000000000000..432706e85ceb --- /dev/null +++ b/test/CodeCompletion/pragma-macro-token-caching.c @@ -0,0 +1,18 @@ + +#define Outer(action) action + +void completeParam(int param) { + ; + Outer(__extension__({ _Pragma("clang diagnostic push") })); + param; +} + +// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:7:1 %s | FileCheck %s +// CHECK: param : [#int#]param + +void completeParamPragmaError(int param) { + Outer(__extension__({ _Pragma(2) })); // expected-error {{_Pragma takes a parenthesized string literal}} + param; +} + +// RUN: %clang_cc1 -fsyntax-only -verify -code-completion-at=%s:16:1 %s | FileCheck %s |
