From: Paul Robinson Date: Wed, 21 Dec 2016 18:33:17 +0000 (+0000) Subject: Make some diagnostic tests C++11 clean. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b94950e0168bca59ccee73b6585c20527032a970;p=clang Make some diagnostic tests C++11 clean. Differential Revision: http://reviews.llvm.org/D27794 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290262 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/FixIt/fixit.cpp b/test/FixIt/fixit.cpp index 686cc23d63..c43aac9862 100644 --- a/test/FixIt/fixit.cpp +++ b/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 @@ static void C1::g() { } // expected-error{{'static' can only be specified inside 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 @@ protected: }; 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 @@ namespace greatergreater { void (*p)() = &t; (void)(&t==p); // expected-error {{use '> ='}} (void)(&t>=p); // expected-error {{use '> >'}} +#if __cplusplus < 201103L (void)(&t>>=p); // expected-error {{use '> >'}} (Shr)&t>>>=p; // expected-error {{use '> >'}} +#endif // FIXME: We correct this to '&t > >= p;' not '&t >>= p;' //(Shr)&t>>=p; diff --git a/test/Parser/backtrack-off-by-one.cpp b/test/Parser/backtrack-off-by-one.cpp index 74b51cbb67..efb95a5a22 100644 --- a/test/Parser/backtrack-off-by-one.cpp +++ b/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 @@ template class A {}; // 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 { }; diff --git a/test/SemaCXX/copy-assignment.cpp b/test/SemaCXX/copy-assignment.cpp index 798582c149..d6ad657789 100644 --- a/test/SemaCXX/copy-assignment.cpp +++ b/test/SemaCXX/copy-assignment.cpp @@ -1,4 +1,11 @@ -// 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 { }; @@ -7,6 +14,9 @@ struct ConvertibleToA { }; struct ConvertibleToConstA { +#if __cplusplus >= 201103L +// expected-note@+2 {{candidate function}} +#endif operator const A(); }; @@ -69,6 +79,9 @@ void test() { 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 '+='}}