[PATCH] D27794: Make some diagnostic tests C++11 clean
This revision was automatically updated to reflect the committed changes. Closed by commit rL290262: Make some diagnostic tests C++11 clean. (authored by probinson). Changed prior to commit: https://reviews.llvm.org/D27794?vs=81977=82248#toc Repository: rL LLVM https://reviews.llvm.org/D27794 Files: cfe/trunk/test/FixIt/fixit.cpp cfe/trunk/test/Parser/backtrack-off-by-one.cpp cfe/trunk/test/SemaCXX/copy-assignment.cpp Index: cfe/trunk/test/FixIt/fixit.cpp === --- cfe/trunk/test/FixIt/fixit.cpp +++ cfe/trunk/test/FixIt/fixit.cpp @@ -1,8 +1,12 @@ -// RUN: %clang_cc1 -pedantic -Wall -Wno-comment -verify -fcxx-exceptions -x c++ %s +// RUN: %clang_cc1 -pedantic -Wall -Wno-comment -verify -fcxx-exceptions -x c++ -std=c++98 %s +// RUN: cp %s %t-98 +// RUN: not %clang_cc1 -pedantic -Wall -Wno-comment -fcxx-exceptions -fixit -x c++ -std=c++98 %t-98 +// RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror -Wno-comment -fcxx-exceptions -x c++ -std=c++98 %t-98 // RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits -x c++ -std=c++11 %s 2>&1 | FileCheck %s -// RUN: cp %s %t -// RUN: not %clang_cc1 -pedantic -Wall -Wno-comment -fcxx-exceptions -fixit -x c++ %t -// RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror -Wno-comment -fcxx-exceptions -x c++ %t +// RUN: %clang_cc1 -pedantic -Wall -Wno-comment -verify -fcxx-exceptions -x c++ -std=c++11 %s +// RUN: cp %s %t-11 +// RUN: not %clang_cc1 -pedantic -Wall -Wno-comment -fcxx-exceptions -fixit -x c++ -std=c++11 %t-11 +// RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror -Wno-comment -fcxx-exceptions -x c++ -std=c++11 %t-11 /* This is a test of the various code modification hints that are provided as part of warning or extension diagnostics. All of the @@ -21,7 +25,11 @@ template struct CT { template struct Inner; }; // expected-note{{previous use is here}} +// FIXME: In C++11 this gets 'expected unqualified-id' which fixit can't fix. +// Probably parses as `CT<10> > 2 > ct;` rather than `CT<(10 >> 2)> ct;`. +#if __cplusplus < 201103L CT<10 >> 2> ct; // expected-warning{{require parentheses}} +#endif class C3 { public: @@ -41,7 +49,11 @@ }; class B : public A { +#if __cplusplus >= 201103L + A::foo; // expected-error{{ISO C++11 does not allow access declarations}} +#else A::foo; // expected-warning{{access declarations are deprecated}} +#endif }; void f() throw(); // expected-note{{previous}} @@ -285,8 +297,10 @@ void (*p)() = ; (void)(==p); // expected-error {{use '> ='}} (void)(>=p); // expected-error {{use '> >'}} +#if __cplusplus < 201103L (void)(>=p); // expected-error {{use '> >'}} (Shr)>>=p; // expected-error {{use '> >'}} +#endif // FIXME: We correct this to ' > >= p;' not ' >>= p;' //(Shr)>>=p; Index: cfe/trunk/test/Parser/backtrack-off-by-one.cpp === --- cfe/trunk/test/Parser/backtrack-off-by-one.cpp +++ cfe/trunk/test/Parser/backtrack-off-by-one.cpp @@ -1,4 +1,6 @@ // RUN: %clang_cc1 -verify %s +// RUN: %clang_cc1 -verify %s -std=c++98 +// RUN: %clang_cc1 -verify %s -std=c++11 // PR25946 // We had an off-by-one error in an assertion when annotating A below. Our @@ -10,8 +12,10 @@ // expected-error@+1 {{expected '{' after base class list}} template class B : T // not ',' or '{' -// expected-error@+3 {{C++ requires a type specifier for all declarations}} -// expected-error@+2 {{expected ';' after top level declarator}} +#if __cplusplus < 201103L +// expected-error@+4 {{expected ';' after top level declarator}} +#endif +// expected-error@+2 {{C++ requires a type specifier for all declarations}} // expected-error@+1 {{expected ';' after class}} A { }; Index: cfe/trunk/test/SemaCXX/copy-assignment.cpp === --- cfe/trunk/test/SemaCXX/copy-assignment.cpp +++ cfe/trunk/test/SemaCXX/copy-assignment.cpp @@ -1,12 +1,22 @@ -// RUN: %clang_cc1 -fsyntax-only -verify %s +// RUN: %clang_cc1 -fsyntax-only -verify %s +// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++98 +// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 + +#if __cplusplus >= 201103L +// expected-note@+3 2 {{candidate constructor}} +// expected-note@+2 {{passing argument to parameter here}} +#endif struct A { }; struct ConvertibleToA { operator A(); }; struct ConvertibleToConstA { +#if __cplusplus >= 201103L +// expected-note@+2 {{candidate function}} +#endif operator const A(); }; @@ -69,6 +79,9 @@ na = a; na = constA; na = convertibleToA; +#if __cplusplus >= 201103L +// expected-error@+2 {{no viable conversion}} +#endif na = convertibleToConstA; na += a; // expected-error{{no viable overloaded '+='}} ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D27794: Make some diagnostic tests C++11 clean
probinson marked an inline comment as done. probinson added a comment. FIXME added. https://reviews.llvm.org/D27794 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D27794: Make some diagnostic tests C++11 clean
rnk accepted this revision. rnk added a comment. This revision is now accepted and ready to land. Everything here looks good to me. Comment at: test/FixIt/fixit.cpp:28 +// In C++11 this gets 'expected unqualified-id' which fixit can't fix. +#if __cplusplus < 201103L I guess in C++11 we now parse this as `CT<10> > 2 > ct;`. I'd add a FIXME comment here to re-enable this recovery in C++11. https://reviews.llvm.org/D27794 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D27794: Make some diagnostic tests C++11 clean
probinson added a reviewer: rnk. probinson updated this revision to Diff 81977. probinson added a comment. Remove the OpenMP tests from this review (committed in r290128). +rnk who added test/Parser/backtrack-off-by-one.cpp originally. https://reviews.llvm.org/D27794 Files: test/FixIt/fixit.cpp test/Parser/backtrack-off-by-one.cpp test/SemaCXX/copy-assignment.cpp Index: test/SemaCXX/copy-assignment.cpp === --- test/SemaCXX/copy-assignment.cpp +++ test/SemaCXX/copy-assignment.cpp @@ -1,12 +1,22 @@ -// RUN: %clang_cc1 -fsyntax-only -verify %s +// RUN: %clang_cc1 -fsyntax-only -verify %s +// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++98 +// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 + +#if __cplusplus >= 201103L +// expected-note@+3 2 {{candidate constructor}} +// expected-note@+2 {{passing argument to parameter here}} +#endif struct A { }; struct ConvertibleToA { operator A(); }; struct ConvertibleToConstA { +#if __cplusplus >= 201103L +// expected-note@+2 {{candidate function}} +#endif operator const A(); }; @@ -69,6 +79,9 @@ na = a; na = constA; na = convertibleToA; +#if __cplusplus >= 201103L +// expected-error@+2 {{no viable conversion}} +#endif na = convertibleToConstA; na += a; // expected-error{{no viable overloaded '+='}} Index: test/Parser/backtrack-off-by-one.cpp === --- test/Parser/backtrack-off-by-one.cpp +++ test/Parser/backtrack-off-by-one.cpp @@ -1,4 +1,6 @@ // RUN: %clang_cc1 -verify %s +// RUN: %clang_cc1 -verify %s -std=c++98 +// RUN: %clang_cc1 -verify %s -std=c++11 // PR25946 // We had an off-by-one error in an assertion when annotating A below. Our @@ -10,8 +12,10 @@ // expected-error@+1 {{expected '{' after base class list}} template class B : T // not ',' or '{' -// expected-error@+3 {{C++ requires a type specifier for all declarations}} -// expected-error@+2 {{expected ';' after top level declarator}} +#if __cplusplus < 201103L +// expected-error@+4 {{expected ';' after top level declarator}} +#endif +// expected-error@+2 {{C++ requires a type specifier for all declarations}} // expected-error@+1 {{expected ';' after class}} A { }; Index: test/FixIt/fixit.cpp === --- test/FixIt/fixit.cpp +++ test/FixIt/fixit.cpp @@ -1,8 +1,12 @@ -// RUN: %clang_cc1 -pedantic -Wall -Wno-comment -verify -fcxx-exceptions -x c++ %s +// RUN: %clang_cc1 -pedantic -Wall -Wno-comment -verify -fcxx-exceptions -x c++ -std=c++98 %s +// RUN: cp %s %t-98 +// RUN: not %clang_cc1 -pedantic -Wall -Wno-comment -fcxx-exceptions -fixit -x c++ -std=c++98 %t-98 +// RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror -Wno-comment -fcxx-exceptions -x c++ -std=c++98 %t-98 // RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits -x c++ -std=c++11 %s 2>&1 | FileCheck %s -// RUN: cp %s %t -// RUN: not %clang_cc1 -pedantic -Wall -Wno-comment -fcxx-exceptions -fixit -x c++ %t -// RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror -Wno-comment -fcxx-exceptions -x c++ %t +// RUN: %clang_cc1 -pedantic -Wall -Wno-comment -verify -fcxx-exceptions -x c++ -std=c++11 %s +// RUN: cp %s %t-11 +// RUN: not %clang_cc1 -pedantic -Wall -Wno-comment -fcxx-exceptions -fixit -x c++ -std=c++11 %t-11 +// RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror -Wno-comment -fcxx-exceptions -x c++ -std=c++11 %t-11 /* This is a test of the various code modification hints that are provided as part of warning or extension diagnostics. All of the @@ -21,7 +25,10 @@ template struct CT { template struct Inner; }; // expected-note{{previous use is here}} +// In C++11 this gets 'expected unqualified-id' which fixit can't fix. +#if __cplusplus < 201103L CT<10 >> 2> ct; // expected-warning{{require parentheses}} +#endif class C3 { public: @@ -41,7 +48,11 @@ }; class B : public A { +#if __cplusplus >= 201103L + A::foo; // expected-error{{ISO C++11 does not allow access declarations}} +#else A::foo; // expected-warning{{access declarations are deprecated}} +#endif }; void f() throw(); // expected-note{{previous}} @@ -285,8 +296,10 @@ void (*p)() = ; (void)(==p); // expected-error {{use '> ='}} (void)(>=p); // expected-error {{use '> >'}} +#if __cplusplus < 201103L (void)(>=p); // expected-error {{use '> >'}} (Shr)>>=p; // expected-error {{use '> >'}} +#endif // FIXME: We correct this to ' > >= p;' not ' >>= p;' //(Shr)>>=p; ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D27794: Make some diagnostic tests C++11 clean
ABataev added a comment. LG for OpenMP part https://reviews.llvm.org/D27794 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D27794: Make some diagnostic tests C++11 clean
probinson added a reviewer: ABataev. probinson added a comment. +abataev for OpenMP. https://reviews.llvm.org/D27794 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D27794: Make some diagnostic tests C++11 clean
probinson created this revision. probinson added a reviewer: rsmith. probinson added subscribers: cfe-commits, tigerleapgorge. Another half-dozen test revisions in the ongoing campaign to make things ready for C++11 as Clangs's default dialect. Most of these are straightforward, but I am not entirely sure about a couple of things: - In fixit.cpp, the place that now gets 'expected unqualified-id' seems funny, but maybe that's just the nature of things - In copy-assignment.cpp, I am bemused by the whole thing but especially 'passing argument to parameter here' https://reviews.llvm.org/D27794 Files: test/FixIt/fixit.cpp test/OpenMP/teams_distribute_collapse_messages.cpp test/OpenMP/teams_distribute_parallel_for_collapse_messages.cpp test/OpenMP/teams_distribute_parallel_for_simd_collapse_messages.cpp test/Parser/backtrack-off-by-one.cpp test/SemaCXX/copy-assignment.cpp Index: test/SemaCXX/copy-assignment.cpp === --- test/SemaCXX/copy-assignment.cpp +++ test/SemaCXX/copy-assignment.cpp @@ -1,12 +1,22 @@ -// RUN: %clang_cc1 -fsyntax-only -verify %s +// RUN: %clang_cc1 -fsyntax-only -verify %s +// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++98 +// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 + +#if __cplusplus >= 201103L +// expected-note@+3 2 {{candidate constructor}} +// expected-note@+2 {{passing argument to parameter here}} +#endif struct A { }; struct ConvertibleToA { operator A(); }; struct ConvertibleToConstA { +#if __cplusplus >= 201103L +// expected-note@+2 {{candidate function}} +#endif operator const A(); }; @@ -69,6 +79,9 @@ na = a; na = constA; na = convertibleToA; +#if __cplusplus >= 201103L +// expected-error@+2 {{no viable conversion}} +#endif na = convertibleToConstA; na += a; // expected-error{{no viable overloaded '+='}} Index: test/Parser/backtrack-off-by-one.cpp === --- test/Parser/backtrack-off-by-one.cpp +++ test/Parser/backtrack-off-by-one.cpp @@ -1,4 +1,6 @@ // RUN: %clang_cc1 -verify %s +// RUN: %clang_cc1 -verify %s -std=c++98 +// RUN: %clang_cc1 -verify %s -std=c++11 // PR25946 // We had an off-by-one error in an assertion when annotating A below. Our @@ -10,8 +12,10 @@ // expected-error@+1 {{expected '{' after base class list}} template class B : T // not ',' or '{' -// expected-error@+3 {{C++ requires a type specifier for all declarations}} -// expected-error@+2 {{expected ';' after top level declarator}} +#if __cplusplus < 201103L +// expected-error@+4 {{expected ';' after top level declarator}} +#endif +// expected-error@+2 {{C++ requires a type specifier for all declarations}} // expected-error@+1 {{expected ';' after class}} A { }; Index: test/OpenMP/teams_distribute_parallel_for_simd_collapse_messages.cpp === --- test/OpenMP/teams_distribute_parallel_for_simd_collapse_messages.cpp +++ test/OpenMP/teams_distribute_parallel_for_simd_collapse_messages.cpp @@ -1,8 +1,13 @@ // RUN: %clang_cc1 -verify -fopenmp %s +// RUN: %clang_cc1 -verify -fopenmp %s -std=c++98 +// RUN: %clang_cc1 -verify -fopenmp %s -std=c++11 void foo() { } +#if __cplusplus >= 201103L +// expected-note@+2 4 {{declared here}} +#endif bool foobool(int argc) { return argc; } @@ -50,6 +55,9 @@ for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; // expected-error 2 {{expected 2 for loops after '#pragma omp teams distribute parallel for simd', but found only 1}} +#if __cplusplus >= 201103L +// expected-note@+6 2 {{non-constexpr function 'foobool' cannot be used}} +#endif // expected-error@+4 2 {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'collapse' clause}} // expected-error@+3 2 {{argument to 'collapse' clause must be a strictly positive integer value}} // expected-error@+2 2 {{expression is not an integral constant expression}} @@ -62,7 +70,11 @@ for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i-ST]; -// expected-error@+2 2 {{expression is not an integral constant expression}} +#if __cplusplus >= 201103L +// expected-error@+5 2 {{integral constant expression must have integral or unscoped enumeration type}} +#else +// expected-error@+3 2 {{expression is not an integral constant expression}} +#endif #pragma omp target #pragma omp teams distribute parallel for simd collapse (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}} for (int i = ST; i < N; i++) @@ -110,11 +122,17 @@ for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4]; // expected-error {{expected 4 for loops after '#pragma omp teams distribute parallel for simd', but found only 1}} +#if __cplusplus >= 201103L +// expected-note@+3 {{non-constexpr function 'foobool' cannot be used}} +#endif #pragma omp target