diff options
Diffstat (limited to 'test/Parser')
| -rw-r--r-- | test/Parser/cxx-default-args.cpp | 9 | ||||
| -rw-r--r-- | test/Parser/objc-messaging-neg-1.m | 6 | ||||
| -rw-r--r-- | test/Parser/statements.c | 5 | 
3 files changed, 20 insertions, 0 deletions
| diff --git a/test/Parser/cxx-default-args.cpp b/test/Parser/cxx-default-args.cpp new file mode 100644 index 0000000000000..a084fb0812bac --- /dev/null +++ b/test/Parser/cxx-default-args.cpp @@ -0,0 +1,9 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s + +// PR6647 +class C { +  // After the error, the rest of the tokens inside the default arg should be +  // skipped, avoiding a "expected ';' after class" after 'undecl'. +  void m(int x = undecl + 0); // expected-error {{use of undeclared identifier 'undecl'}} +}; + diff --git a/test/Parser/objc-messaging-neg-1.m b/test/Parser/objc-messaging-neg-1.m index 0d0cb9d8d6fea..4ddadb816f0df 100644 --- a/test/Parser/objc-messaging-neg-1.m +++ b/test/Parser/objc-messaging-neg-1.m @@ -1,6 +1,12 @@  // RUN: %clang_cc1 -fsyntax-only -verify %s +@interface A ++(void) foo:(int) a; +@end +  int main() {    id a;    [a bla:0 6:7]; // expected-error {{expected ']'}} +  [A foo bar]; // expected-error {{expected ':'}} +  [A foo bar bar1]; // expected-error {{expected ':'}}  } diff --git a/test/Parser/statements.c b/test/Parser/statements.c index a662c9b821185..bc7192a7b2b32 100644 --- a/test/Parser/statements.c +++ b/test/Parser/statements.c @@ -57,3 +57,8 @@ void test6(void) {  int test7() {    return 4     // expected-error {{expected ';' after return statement}}  } + +void test8() { +  // Should not skip '}' and produce a "expected '}'" error. +  undecl // expected-error {{use of undeclared identifier 'undecl'}} +} | 
