summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/test/clang-tidy/cppcoreguidelines-avoid-goto.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/cppcoreguidelines-avoid-goto.cpp')
-rw-r--r--clang-tools-extra/test/clang-tidy/cppcoreguidelines-avoid-goto.cpp139
1 files changed, 0 insertions, 139 deletions
diff --git a/clang-tools-extra/test/clang-tidy/cppcoreguidelines-avoid-goto.cpp b/clang-tools-extra/test/clang-tidy/cppcoreguidelines-avoid-goto.cpp
deleted file mode 100644
index ee236bc4469..00000000000
--- a/clang-tools-extra/test/clang-tidy/cppcoreguidelines-avoid-goto.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-// RUN: %check_clang_tidy %s cppcoreguidelines-avoid-goto %t
-
-void noop() {}
-
-int main() {
- noop();
- goto jump_to_me;
- // CHECK-NOTES: [[@LINE-1]]:3: warning: avoid using 'goto' for flow control
- // CHECK-NOTES: [[@LINE+3]]:1: note: label defined here
- noop();
-
-jump_to_me:;
-
-jump_backwards:;
- noop();
- goto jump_backwards;
- // CHECK-NOTES: [[@LINE-1]]:3: warning: avoid using 'goto' for flow control
- // CHECK-NOTES: [[@LINE-4]]:1: note: label defined here
-
- goto jump_in_line;
- ;
-jump_in_line:;
- // CHECK-NOTES: [[@LINE-3]]:3: warning: avoid using 'goto' for flow control
- // CHECK-NOTES: [[@LINE-2]]:1: note: label defined here
-
- // Test the GNU extension https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
-some_label:;
- void *dynamic_label = &&some_label;
-
- // FIXME: `IndirectGotoStmt` is not detected.
- goto *dynamic_label;
-}
-
-void forward_jump_out_nested_loop() {
- int array[] = {1, 2, 3, 4, 5};
- for (int i = 0; i < 10; ++i) {
- noop();
- for (int j = 0; j < 10; ++j) {
- noop();
- if (i + j > 10)
- goto early_exit1;
- }
- noop();
- }
-
- for (int i = 0; i < 10; ++i) {
- noop();
- while (true) {
- noop();
- if (i > 5)
- goto early_exit1;
- }
- noop();
- }
-
- for (auto value : array) {
- noop();
- for (auto number : array) {
- noop();
- if (number == 5)
- goto early_exit1;
- }
- }
-
- do {
- noop();
- do {
- noop();
- goto early_exit1;
- } while (true);
- } while (true);
-
- do {
- for (auto number : array) {
- noop();
- if (number == 2)
- goto early_exit1;
- }
- } while (true);
-
- // Jumping further results in error, because the variable declaration would
- // be skipped.
-early_exit1:;
-
- int i = 0;
- while (true) {
- noop();
- while (true) {
- noop();
- if (i > 5)
- goto early_exit2;
- i++;
- }
- noop();
- }
-
- while (true) {
- noop();
- for (int j = 0; j < 10; ++j) {
- noop();
- if (j > 5)
- goto early_exit2;
- }
- noop();
- }
-
- while (true) {
- noop();
- for (auto number : array) {
- if (number == 1)
- goto early_exit2;
- noop();
- }
- }
-
- while (true) {
- noop();
- do {
- noop();
- goto early_exit2;
- } while (true);
- }
-early_exit2:;
-}
-
-void jump_out_backwards() {
-
-before_the_loop:
- noop();
-
- for (int i = 0; i < 10; ++i) {
- for (int j = 0; j < 10; ++j) {
- if (i * j > 80)
- goto before_the_loop;
- // CHECK-NOTES: [[@LINE-1]]:9: warning: avoid using 'goto' for flow control
- // CHECK-NOTES: [[@LINE-8]]:1: note: label defined here
- }
- }
-}
OpenPOWER on IntegriCloud