diff options
Diffstat (limited to 'test/FixIt')
-rw-r--r-- | test/FixIt/fixit-at.c | 5 | ||||
-rw-r--r-- | test/FixIt/fixit-c90.c | 8 | ||||
-rw-r--r-- | test/FixIt/fixit-cxx0x.cpp | 10 | ||||
-rw-r--r-- | test/FixIt/fixit-errors-1.c | 5 | ||||
-rw-r--r-- | test/FixIt/fixit-errors.c | 5 | ||||
-rw-r--r-- | test/FixIt/fixit-objc.m | 7 | ||||
-rw-r--r-- | test/FixIt/fixit-pmem.cpp | 5 | ||||
-rw-r--r-- | test/FixIt/fixit-suffix.c | 5 | ||||
-rw-r--r-- | test/FixIt/fixit-unrecoverable.c | 10 | ||||
-rw-r--r-- | test/FixIt/fixit-unrecoverable.cpp | 11 | ||||
-rw-r--r-- | test/FixIt/fixit.c | 19 | ||||
-rw-r--r-- | test/FixIt/fixit.cpp | 15 | ||||
-rw-r--r-- | test/FixIt/typo.c | 4 | ||||
-rw-r--r-- | test/FixIt/typo.cpp | 5 | ||||
-rw-r--r-- | test/FixIt/typo.m | 60 |
15 files changed, 140 insertions, 34 deletions
diff --git a/test/FixIt/fixit-at.c b/test/FixIt/fixit-at.c deleted file mode 100644 index c32aee9ea174a..0000000000000 --- a/test/FixIt/fixit-at.c +++ /dev/null @@ -1,5 +0,0 @@ -// RUN: %clang_cc1 -fixit-at=fixit-at.c:3:1 %s -o - | %clang_cc1 -verify -x c - - -_Complex cd; - -int i0[1] = { { 17 } }; // expected-warning{{braces}} diff --git a/test/FixIt/fixit-c90.c b/test/FixIt/fixit-c90.c index e84733f49dbcf..0bc1fada8b6bd 100644 --- a/test/FixIt/fixit-c90.c +++ b/test/FixIt/fixit-c90.c @@ -1,4 +1,10 @@ -/* RUN: %clang_cc1 -std=c90 -pedantic -fixit %s -o - | %clang_cc1 -pedantic -x c -std=c90 -Werror - +/* RUN: cp %s %t + RUN: %clang_cc1 -std=c90 -pedantic -fixit %t + RUN: %clang_cc1 -pedantic -x c -std=c90 -Werror %t + */ +/* XPASS: * + This test passes because clang merely warns for this syntax error even with + -pedantic -Werror -std=c90. */ /* This is a test of the various code modification hints that are diff --git a/test/FixIt/fixit-cxx0x.cpp b/test/FixIt/fixit-cxx0x.cpp index 3694b9db1af33..d8a858d9da74e 100644 --- a/test/FixIt/fixit-cxx0x.cpp +++ b/test/FixIt/fixit-cxx0x.cpp @@ -1,13 +1,15 @@ -/* RUN: %clang_cc1 -std=c++0x -fixit %s -o - | %clang_cc1 -x c++ -std=c++0x - - */ +// RUN: %clang_cc1 -verify -std=c++0x %s +// RUN: cp %s %t +// RUN: %clang_cc1 -std=c++0x -fixit %t || true +// RUN: %clang_cc1 -Wall -pedantic -x c++ -std=c++0x %t /* This is a test of the various code modification hints that only apply in C++0x. */ -struct A { +struct A { explicit operator int(); // expected-note{{conversion to integral type}} }; -void x() { +void x() { switch(A()) { // expected-error{{explicit conversion to}} } } diff --git a/test/FixIt/fixit-errors-1.c b/test/FixIt/fixit-errors-1.c index ecad53ceb83dc..96f27eb6d0e90 100644 --- a/test/FixIt/fixit-errors-1.c +++ b/test/FixIt/fixit-errors-1.c @@ -1,4 +1,7 @@ -// RUN: %clang_cc1 -pedantic -fixit %s -o - | %clang_cc1 -pedantic -Werror -x c - +// RUN: cp %s %t +// RUN: %clang_cc1 -pedantic -fixit %t +// RUN: echo %clang_cc1 -pedantic -Werror -x c %t +/* XPASS: * */ /* This is a test of the various code modification hints that are provided as part of warning or extension diagnostics. All of the diff --git a/test/FixIt/fixit-errors.c b/test/FixIt/fixit-errors.c index 7bf9a58430f11..ff063635f693c 100644 --- a/test/FixIt/fixit-errors.c +++ b/test/FixIt/fixit-errors.c @@ -1,4 +1,7 @@ -// RUN: %clang_cc1 -pedantic -fixit %s -o - | %clang_cc1 -pedantic -Werror -x c - +// RUN: cp %s %t +// RUN: %clang_cc1 -pedantic -verify -fixit -x c %t || true +// RUN: %clang_cc1 -pedantic -Werror -x c %t +// XFAIL: * /* This is a test of the various code modification hints that are provided as part of warning or extension diagnostics. All of the diff --git a/test/FixIt/fixit-objc.m b/test/FixIt/fixit-objc.m index 665ac74441ae6..03f28a1b586a0 100644 --- a/test/FixIt/fixit-objc.m +++ b/test/FixIt/fixit-objc.m @@ -1,5 +1,6 @@ -// RUN: %clang_cc1 -pedantic -fixit %s -o %t -// RUN: %clang_cc1 -pedantic -x objective-c %t -verify +// RUN: cp %s %t +// RUN: %clang_cc1 -pedantic -fixit -x objective-c %t +// RUN: %clang_cc1 -pedantic -verify -x objective-c %t /* This is a test of the various code modification hints that are provided as part of warning or extension diagnostics. All of the @@ -27,7 +28,7 @@ void h(id a); void f(Test *t) { NSString *a = "Foo"; id b = "Foo"; - A* c = "Foo"; // expected-warning {{incompatible pointer types initializing 'char [4]', expected 'A *'}} + A* c = "Foo"; // expected-warning {{incompatible pointer types initializing 'A *' with an expression of type 'char [4]'}} g("Foo"); h("Foo"); h(("Foo")); diff --git a/test/FixIt/fixit-pmem.cpp b/test/FixIt/fixit-pmem.cpp index 0926309a9ab81..b69eadf15a052 100644 --- a/test/FixIt/fixit-pmem.cpp +++ b/test/FixIt/fixit-pmem.cpp @@ -1,4 +1,7 @@ -// RUN: %clang_cc1 -pedantic -fixit %s -o - | %clang_cc1 -fsyntax-only -pedantic -Werror -x c++ - +// RUN: cp %s %t +// RUN: %clang_cc1 -pedantic -fixit -x c++ %t +// RUN: %clang_cc1 -fsyntax-only -pedantic -Werror -x c++ %t +// XFAIL: * /* This is a test of the various code modification hints that are provided as part of warning or extension diagnostics. All of the diff --git a/test/FixIt/fixit-suffix.c b/test/FixIt/fixit-suffix.c new file mode 100644 index 0000000000000..a1a747a95a585 --- /dev/null +++ b/test/FixIt/fixit-suffix.c @@ -0,0 +1,5 @@ +// RUN: cp %s %t.extrasuffix +// RUN: %clang_cc1 -fixit=fixed -x c %t.extrasuffix +// RUN: %clang_cc1 -Werror -pedantic -x c %t.fixed.extrasuffix + +_Complex cd; diff --git a/test/FixIt/fixit-unrecoverable.c b/test/FixIt/fixit-unrecoverable.c new file mode 100644 index 0000000000000..8052beb5591c0 --- /dev/null +++ b/test/FixIt/fixit-unrecoverable.c @@ -0,0 +1,10 @@ +/* FIXME: This is a file containing various typos for which we can + suggest corrections but are unable to actually recover from + them. Ideally, we would eliminate all such cases and move these + tests elsewhere. */ + +// RUN: %clang_cc1 -fsyntax-only -verify %s + +// FIXME: Sadly, the following doesn't work within a function. + +unsinged x = 17; // expected-error{{unknown type name 'unsinged'; did you mean 'unsigned'?}} diff --git a/test/FixIt/fixit-unrecoverable.cpp b/test/FixIt/fixit-unrecoverable.cpp new file mode 100644 index 0000000000000..00ed8978c6104 --- /dev/null +++ b/test/FixIt/fixit-unrecoverable.cpp @@ -0,0 +1,11 @@ +/* FIXME: This is a file containing various typos for which we can + suggest corrections but are unable to actually recover from + them. Ideally, we would eliminate all such cases and move these + tests elsewhere. */ + +// RUN: %clang_cc1 -fsyntax-only -verify %s + +float f(int y) { + return static_cst<float>(y); // expected-error{{use of undeclared identifier 'static_cst'; did you mean 'static_cast'?}} +} + diff --git a/test/FixIt/fixit.c b/test/FixIt/fixit.c index 83d724dffc01a..b799fa3b3b884 100644 --- a/test/FixIt/fixit.c +++ b/test/FixIt/fixit.c @@ -1,6 +1,8 @@ -// RUN: %clang_cc1 -pedantic -fixit %s -o - | grep -v 'CHECK' > %t -// RUN: %clang_cc1 -pedantic -Werror -x c - -// RUN: FileCheck -input-file=%t %s +// RUN: cp %s %t +// RUN: %clang_cc1 -pedantic -fixit -x c %t || true +// RUN: grep -v CHECK %t > %t2 +// RUN: %clang_cc1 -pedantic -Werror -x c %t +// RUN: FileCheck -input-file=%t2 %t /* This is a test of the various code modification hints that are provided as part of warning or extension diagnostics. All of the @@ -25,15 +27,14 @@ struct s s0 = { y: 5 }; // CHECK: int array0[5] = { [3] = 3 }; int array0[5] = { [3] 3 }; -void f1(x, y) +void f1(x, y) { } int i0 = { 17 }; -int f2(const char *my_string) { - // FIXME: terminal output isn't so good when "my_string" is shorter -// CHECK: return strcmp(my_string , "foo") == 0; - return my_string == "foo"; +int test_cond(int y, int fooBar) { +// CHECK: int x = y ? 1 : 4+fooBar; + int x = y ? 1 4+foobar; + return x; } - diff --git a/test/FixIt/fixit.cpp b/test/FixIt/fixit.cpp index 79c294b1d9292..b9282c4d94811 100644 --- a/test/FixIt/fixit.cpp +++ b/test/FixIt/fixit.cpp @@ -1,11 +1,13 @@ -// RUN: %clang_cc1 -pedantic -Wall -fixit %s -o - | %clang_cc1 -fsyntax-only -pedantic -Wall -Werror -x c++ - +// RUN: cp %s %t +// RUN: %clang_cc1 -pedantic -Wall -fixit -x c++ %t || true +// RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror -x c++ %t /* This is a test of the various code modification hints that are provided as part of warning or extension diagnostics. All of the warnings will be fixed by -fixit, and the resulting file should compile cleanly with -Werror -pedantic. */ -struct C1 { +struct C1 { virtual void f(); static void g(); }; @@ -40,3 +42,12 @@ class B : public A { void f() throw(); void f(); // expected-warning{{missing exception specification}} + +namespace rdar7853795 { + struct A { + bool getNumComponents() const; // expected-note{{declared here}} + void dump() const { + getNumComponenets(); // expected-error{{use of undeclared identifier 'getNumComponenets'; did you mean 'getNumComponents'?}} + } + }; +} diff --git a/test/FixIt/typo.c b/test/FixIt/typo.c index 72e3d658e7b6a..01ff3a09cf3e7 100644 --- a/test/FixIt/typo.c +++ b/test/FixIt/typo.c @@ -1,5 +1,7 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s -// RUN: %clang_cc1 -fsyntax-only -fixit -o - %s | %clang_cc1 -fsyntax-only -pedantic -Werror -x c - +// RUN: cp %s %t +// RUN: %clang_cc1 -fsyntax-only -fixit -x c %t || true +// RUN: %clang_cc1 -fsyntax-only -pedantic -Werror -x c %t struct Point { float x, y; }; diff --git a/test/FixIt/typo.cpp b/test/FixIt/typo.cpp index efc9ba890c6fa..5b9e68bbfd3de 100644 --- a/test/FixIt/typo.cpp +++ b/test/FixIt/typo.cpp @@ -1,7 +1,10 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s -// RUN: %clang_cc1 -fsyntax-only -fixit -o - %s | %clang_cc1 -fsyntax-only -pedantic -Werror -x c++ - +// RUN: cp %s %t +// RUN: %clang_cc1 -fsyntax-only -fixit -x c++ %t || true +// RUN: %clang_cc1 -fsyntax-only -pedantic -Werror -x c++ %t namespace std { template<typename T> class basic_string { // expected-note 2{{'basic_string' declared here}} + public: int find(const char *substr); // expected-note{{'find' declared here}} static const int npos = -1; // expected-note{{'npos' declared here}} }; diff --git a/test/FixIt/typo.m b/test/FixIt/typo.m index 86dd383c904e7..f161bb8d9948b 100644 --- a/test/FixIt/typo.m +++ b/test/FixIt/typo.m @@ -1,8 +1,10 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s -// FIXME: the test below isn't testing quite what we want... -// RUN: %clang_cc1 -fsyntax-only -fixit -o - %s | %clang_cc1 -fsyntax-only -pedantic -Werror -x objective-c - +// RUN: cp %s %t +// RUN: %clang_cc1 -fsyntax-only -fixit %t || true +// RUN: %clang_cc1 -fsyntax-only -pedantic -Werror -x objective-c %t +// XFAIL: * -@interface NSString +@interface NSString // expected-note{{'NSString' declared here}} + (int)method:(int)x; @end @@ -57,8 +59,7 @@ void test() { @end void test_message_send(B* b) { - // FIXME: Not providing fix-its - [NSstring method:17]; // expected-error{{use of undeclared identifier 'NSstring'; did you mean 'NSString'?}} + [NSstring method:17]; // expected-error{{unknown receiver 'NSstring'; did you mean 'NSString'?}} } @interface Collide // expected-note{{'Collide' declared here}} @@ -88,3 +89,52 @@ void test2(Collide *a) { @interface IPv6 <Network_Socket> // expected-error{{cannot find protocol declaration for 'Network_Socket'; did you mean 'NetworkSocket'?}} @end + +@interface Super +- (int)method; +@end + +@interface Sub : Super +- (int)method; +@end + +@implementation Sub +- (int)method { + return [supper method]; // expected-error{{unknown receiver 'supper'; did you mean 'super'?}} +} + +@end + +@interface Ivar +@end + +@protocol Proto +@property (retain) id ivar; +@end + +@interface User <Proto> +- (void)method; +@end + +@implementation User +@synthesize ivar; + +- (void)method { + [ivar method]; // Test that we don't correct 'ivar' to 'Ivar' +} +@end + +@interface User2 +@end + +@interface User2 (Cat) < Proto> +- (void)method; +@end + +@implementation User2 (Cat) +@synthesize ivar; + +- (void)method { + [ivar method]; // Test that we don't correct 'ivar' to 'Ivar' +} +@end |