From b443dfef82df98fc5c7257bbf97efcd68df5f433 Mon Sep 17 00:00:00 2001 From: Nick Lewycky Date: Fri, 1 May 2015 20:47:19 +0000 Subject: [PATCH] Adjust the wording of the "brackets go after the unqualified-id" error message. It applies in cases that aren't unqualified-ids. llvm-svn: 236344 --- clang/include/clang/Basic/DiagnosticParseKinds.td | 3 ++- clang/test/Parser/brackets.c | 8 +++--- clang/test/Parser/brackets.cpp | 32 ++++++++++++++--------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/clang/include/clang/Basic/DiagnosticParseKinds.td b/clang/include/clang/Basic/DiagnosticParseKinds.td index d96fbac..56cfb0e 100644 --- a/clang/include/clang/Basic/DiagnosticParseKinds.td +++ b/clang/include/clang/Basic/DiagnosticParseKinds.td @@ -477,7 +477,8 @@ def err_invalid_operator_on_type : Error< def err_expected_unqualified_id : Error< "expected %select{identifier|unqualified-id}0">; def err_brackets_go_after_unqualified_id : Error< - "brackets go after the %select{identifier|unqualified-id}0">; + "brackets are not allowed here; to declare an array, " + "place the brackets after the %select{identifier|name}0">; def err_unexpected_unqualified_id : Error<"type-id cannot have a name">; def err_func_def_no_params : Error< "function definition does not declare parameters">; diff --git a/clang/test/Parser/brackets.c b/clang/test/Parser/brackets.c index 2750d0e..a1003f3 100644 --- a/clang/test/Parser/brackets.c +++ b/clang/test/Parser/brackets.c @@ -7,7 +7,7 @@ void test1() { int a[] = {0,1,1,2,3}; int []b = {0,1,4,9,16}; - // expected-error@-1{{brackets go after the identifier}} + // expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the identifier}} // CHECK: {{^}} int []b = {0,1,4,9,16}; // CHECK: {{^}} ~~ ^ // CHECK: {{^}} [] @@ -23,7 +23,7 @@ void test1() { struct S { int [1][1]x; - // expected-error@-1{{brackets go after the identifier}} + // expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the identifier}} // CHECK: {{^}} int [1][1]x; // CHECK: {{^}} ~~~~~~ ^ // CHECK: {{^}} [1][1] @@ -53,7 +53,7 @@ void test3() { // CHECK: {{^}} int [5] *; // CHECK: {{^}} ^ // CHECK-NOT: fix-it - // expected-error@-5{{brackets go after the identifier}} + // expected-error@-5{{brackets are not allowed here; to declare an array, place the brackets after the identifier}} // CHECK: {{^}} int [5] *; // CHECK: {{^}} ~~~~ ^ // CHECK: {{^}} ()[5] @@ -62,7 +62,7 @@ void test3() { // CHECK: fix-it:{{.*}}:{[[@LINE-11]]:12-[[@LINE-11]]:12}:")[5]" int [5] * a; - // expected-error@-1{{brackets go after the identifier}} + // expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the identifier}} // CHECK: {{^}} int [5] * a; // CHECK: {{^}} ~~~~ ^ // CHECK: {{^}} ( )[5] diff --git a/clang/test/Parser/brackets.cpp b/clang/test/Parser/brackets.cpp index f418c11..6963a75 100644 --- a/clang/test/Parser/brackets.cpp +++ b/clang/test/Parser/brackets.cpp @@ -7,7 +7,7 @@ void test1() { int a[] = {0,1,1,2,3}; int []b = {0,1,4,9,16}; - // expected-error@-1{{brackets go after the unqualified-id}} + // expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the name}} // CHECK: {{^}} int []b = {0,1,4,9,16}; // CHECK: {{^}} ~~ ^ // CHECK: {{^}} [] @@ -21,7 +21,7 @@ void test1() { int *f = b; // No undeclared identifer error here. int[1] g[2]; - // expected-error@-1{{brackets go after the unqualified-id}} + // expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the name}} // CHECK: {{^}} int[1] g[2]; // CHECK: {{^}} ~~~ ^ // CHECK: {{^}} [1] @@ -31,7 +31,7 @@ void test1() { void test2() { int [3] (*a) = 0; - // expected-error@-1{{brackets go after the unqualified-id}} + // expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the name}} // CHECK: {{^}} int [3] (*a) = 0; // CHECK: {{^}} ~~~~ ^ // CHECK: {{^}} [3] @@ -47,7 +47,7 @@ void test2() { struct A { static int [1][1]x; - // expected-error@-1{{brackets go after the unqualified-id}} + // expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the name}} // CHECK: {{^}} static int [1][1]x; // CHECK: {{^}} ~~~~~~ ^ // CHECK: {{^}} [1][1] @@ -56,7 +56,7 @@ struct A { }; int [1][1]A::x = { {42} }; -// expected-error@-1{{brackets go after the unqualified-id}} +// expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the name}} // CHECK: {{^}}int [1][1]A::x = { {42} }; // CHECK: {{^}} ~~~~~~ ^ // CHECK: {{^}} [1][1] @@ -65,7 +65,7 @@ int [1][1]A::x = { {42} }; struct B { static int (*x)[5]; }; int [5] *B::x = 0; -// expected-error@-1{{brackets go after the unqualified-id}} +// expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the name}} // CHECK: {{^}}int [5] *B::x = 0; // CHECK: {{^}} ~~~~ ^ // CHECK: {{^}} ( )[5] @@ -75,7 +75,7 @@ int [5] *B::x = 0; void test3() { int [3] *a; - // expected-error@-1{{brackets go after the unqualified-id}} + // expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the name}} // CHECK: {{^}} int [3] *a; // CHECK: {{^}} ~~~~ ^ // CHECK: {{^}} ( )[3] @@ -88,7 +88,7 @@ void test3() { void test4() { int [2] a; - // expected-error@-1{{brackets go after the unqualified-id}} + // expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the name}} // CHECK: {{^}} int [2] a; // CHECK: {{^}} ~~~~ ^ // CHECK: {{^}} [2] @@ -96,7 +96,7 @@ void test4() { // CHECK: fix-it:{{.*}}:{[[@LINE-6]]:12-[[@LINE-6]]:12}:"[2]" int [2] &b = a; - // expected-error@-1{{brackets go after the unqualified-id}} + // expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the name}} // CHECK: {{^}} int [2] &b = a; // CHECK: {{^}} ~~~~ ^ // CHECK: {{^}} ( )[2] @@ -128,7 +128,7 @@ struct A { static int arr[3]; }; int [3] ::test6::A::arr = {1,2,3}; -// expected-error@-1{{brackets go after the unqualified-id}} +// expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the name}} // CHECK: {{^}}int [3] ::test6::A::arr = {1,2,3}; // CHECK: {{^}} ~~~~ ^ // CHECK: {{^}} [3] @@ -141,7 +141,7 @@ namespace test7 { class A{}; void test() { int [3] A::*a; - // expected-error@-1{{brackets go after the unqualified-id}} + // expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the name}} // CHECK: {{^}} int [3] A::*a; // CHECK: {{^}} ~~~~ ^ // CHECK: {{^}} ( )[3] @@ -150,4 +150,12 @@ void test() { // CHECK: fix-it:{{.*}}:{[[@LINE-7]]:16-[[@LINE-7]]:16}:")[3]" } } -// CHECK: 14 errors generated. + +namespace test8 { +struct A { + static const char f[]; +}; +const char[] A::f = "f"; +// expected-error@-1{{brackets are not allowed here; to declare an array, place the brackets after the name}} +} +// CHECK: 15 errors generated. -- 2.7.4