
Code complete `constexpr` and `consteval` keywords after `if` in the relevant language modes. If pattern completion is enabled, the completions also include placeholders for the condition (in the case of `constexpr`) and statement block.
31 lines
1.7 KiB
C++
31 lines
1.7 KiB
C++
template <bool Flag>
|
|
void test() {
|
|
if constexpr (Flag) {
|
|
return;
|
|
}
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++17 -code-completion-at=%s:3:7 %s | FileCheck -check-prefix=CHECK-CXX17 %s
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++17 -code-completion-patterns -code-completion-at=%s:3:7 %s | FileCheck -check-prefix=CHECK-PATTERN-CXX17 %s
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++23 -code-completion-at=%s:3:7 %s | FileCheck -check-prefix=CHECK-CXX23 %s
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++23 -code-completion-patterns -code-completion-at=%s:3:7 %s | FileCheck -check-prefix=CHECK-PATTERN-CXX23 %s
|
|
// CHECK-CXX17: COMPLETION: constexpr
|
|
// CHECK-PATTERN-CXX17: COMPLETION: Pattern : constexpr (<#condition#>) {
|
|
// CHECK-PATTERN-CXX17: <#statements#>
|
|
// CHECK-PATTERN-CXX17: }
|
|
// CHECK-CXX23: COMPLETION: consteval
|
|
// CHECK-CXX23: COMPLETION: constexpr
|
|
// CHECK-PATTERN-CXX23: COMPLETION: Pattern : consteval {
|
|
// CHECK-PATTERN-CXX23: <#statements#>
|
|
// CHECK-PATTERN-CXX23: }
|
|
// CHECK-PATTERN-CXX23: COMPLETION: Pattern : constexpr (<#condition#>) {
|
|
// CHECK-PATTERN-CXX23: <#statements#>
|
|
// CHECK-PATTERN-CXX23: }
|
|
if !c
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++23 -code-completion-at=%s:22:8 %s -o - | FileCheck -check-prefix=CHECK-CXX23-EXCLAIM %s
|
|
// RUN: %clang_cc1 -fsyntax-only -std=c++23 -code-completion-patterns -code-completion-at=%s:22:8 %s -o - | FileCheck -check-prefix=CHECK-PATTERN-CXX23-EXCLAIM %s
|
|
// CHECK-CXX23-EXCLAIM: COMPLETION: consteval
|
|
// CHECK-CXX23-EXCLAIM-NOT: constexpr
|
|
// CHECK-PATTERN-CXX23-EXCLAIM: COMPLETION: Pattern : consteval {
|
|
// CHECK-PATTERN-CXX23-EXCLAIM: <#statements#>
|
|
// CHECK-PATTERN-CXX23-EXCLAIM: }
|
|
}
|