diff options
Diffstat (limited to 'test/CodeCompletion/skip-auto-funcs.cpp')
-rw-r--r-- | test/CodeCompletion/skip-auto-funcs.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/test/CodeCompletion/skip-auto-funcs.cpp b/test/CodeCompletion/skip-auto-funcs.cpp new file mode 100644 index 000000000000..ab2465d7fb04 --- /dev/null +++ b/test/CodeCompletion/skip-auto-funcs.cpp @@ -0,0 +1,61 @@ +// We run clang in completion mode to force skipping of function bodies and +// check if the function bodies were skipped by observing the warnings that +// clang produces. +// RUN: not %clang_cc1 -fsyntax-only -code-completion-at=%s:60:1 %s -o - 2>&1 | FileCheck %s +template <class T> +auto not_skipped() { + int x; + if (x = 10) {} + // Check that this function is not skipped. + // CHECK: 8:9: warning: using the result of an assignment as a condition without parentheses + return 1; +} + +template <class T> +auto lambda_not_skipped = []() { + int x; + if (x = 10) {} + // Check that this function is not skipped. + // CHECK: 17:9: warning: using the result of an assignment as a condition without parentheses + return 1; +} + +template <class T> +auto skipped() -> T { + int x; + if (x = 10) {} + // Check that this function is skipped. + // CHECK-NOT: 26:9: warning: using the result of an assignment as a condition without parentheses + return 1; +}; + +auto lambda_skipped = []() -> int { + int x; + if (x = 10) {} + // This could potentially be skipped, but it isn't at the moment. + // CHECK: 34:9: warning: using the result of an assignment as a condition without parentheses + return 1; +}; + +template <class T> +decltype(auto)** not_skipped_ptr() { + int x; + if (x = 10) {} + // Check that this function is not skipped. + // CHECK: 43:9: warning: using the result of an assignment as a condition without parentheses + return T(); +} + +template <class T> +decltype(auto) not_skipped_decltypeauto() { + int x; + if (x = 10) {} + // Check that this function is not skipped. + // CHECK: 52:9: warning: using the result of an assignment as a condition without parentheses + return 1; +} + +int test() { + int complete_in_this_function; + // CHECK: COMPLETION: complete_in_this_function +} |