diff clang/test/SemaCXX/for-range-crash.cpp @ 221:79ff65ed7e25

LLVM12 Original
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 15 Jun 2021 19:15:29 +0900
parents
children c4bab56944e8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clang/test/SemaCXX/for-range-crash.cpp	Tue Jun 15 19:15:29 2021 +0900
@@ -0,0 +1,30 @@
+// RUN: %clang_cc1 -fsyntax-only -verify -std=c++17 %s
+
+// Ensure that we don't crash if errors are suppressed by an error limit.
+// RUN: not %clang_cc1 -fsyntax-only -std=c++17 -ferror-limit=1 %s
+
+error e; // expected-error {{unknown type name}}
+
+template <typename>
+class Bar {
+  Bar<int> *variables_to_modify;
+  foo() { // expected-error {{C++ requires a type specifier for all declarations}}
+    for (auto *c : *variables_to_modify)
+      delete c;
+  }
+};
+
+void foo() {
+  int a;
+  struct X; // expected-note {{forward declaration}}
+  for (X x // expected-error {{incomplete type}}
+      : a) { // expected-error {{range expression of type 'int'}}
+    constexpr int n = sizeof(x);
+  }
+
+  struct S { int x, y; };
+  for (S [x, y] // expected-error {{must be 'auto'}}
+      : a) { // expected-error {{range expression}}
+    typename decltype(x)::a b;
+  }
+}