Mercurial > hg > CbC > CbC_llvm
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; + } +}