Skip to content

Commit

Permalink
Make some diagnostic tests C++11 clean.
Browse files Browse the repository at this point in the history
Differential Revision: http://reviews.llvm.org/D27794

llvm-svn: 290262
  • Loading branch information
pogo59 committed Dec 21, 2016
1 parent 88f15ee commit 80ba292
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 7 deletions.
22 changes: 18 additions & 4 deletions clang/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
Expand All @@ -21,7 +25,11 @@ static void C1::g() { } // expected-error{{'static' can only be specified inside

template<int Value> struct CT { template<typename> 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:
Expand All @@ -41,7 +49,11 @@ class A {
};

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}}
Expand Down Expand Up @@ -285,8 +297,10 @@ namespace greatergreater {
void (*p)() = &t<int>;
(void)(&t<int>==p); // expected-error {{use '> ='}}
(void)(&t<int>>=p); // expected-error {{use '> >'}}
#if __cplusplus < 201103L
(void)(&t<S<int>>>=p); // expected-error {{use '> >'}}
(Shr)&t<S<int>>>>=p; // expected-error {{use '> >'}}
#endif

// FIXME: We correct this to '&t<int> > >= p;' not '&t<int> >>= p;'
//(Shr)&t<int>>>=p;
Expand Down
8 changes: 6 additions & 2 deletions clang/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<int> below. Our
Expand All @@ -10,8 +12,10 @@ template <typename T> class A {};

// expected-error@+1 {{expected '{' after base class list}}
template <typename T> 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<int> {
};
15 changes: 14 additions & 1 deletion clang/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 {
};

Expand All @@ -7,6 +14,9 @@ struct ConvertibleToA {
};

struct ConvertibleToConstA {
#if __cplusplus >= 201103L
// expected-note@+2 {{candidate function}}
#endif
operator const A();
};

Expand Down Expand Up @@ -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 '+='}}

Expand Down

0 comments on commit 80ba292

Please sign in to comment.