summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-05-26 20:46:24 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-05-26 20:46:24 +0000
commitb0e28471a679927cdfbe736899f50c5c1f56125d (patch)
tree28dd474a542e4fb1ca4808d2979c39dd28bd03bb
parent27311269cbba315bc5dd6d25ddda18a51b20d4b4 (diff)
downloadbcm5719-llvm-b0e28471a679927cdfbe736899f50c5c1f56125d.tar.gz
bcm5719-llvm-b0e28471a679927cdfbe736899f50c5c1f56125d.zip
Improve on flexible array diagnostics (PR7029).
llvm-svn: 104739
-rw-r--r--clang/include/clang/Basic/DiagnosticSemaKinds.td2
-rw-r--r--clang/lib/Sema/SemaDecl.cpp2
-rw-r--r--clang/test/SemaCXX/flexible-array-test.cpp2
3 files changed, 3 insertions, 3 deletions
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index a76757fc078..2ce66903d27 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -1829,7 +1829,7 @@ def ext_variable_sized_type_in_struct : ExtWarn<
def err_flexible_array_empty_struct : Error<
"flexible array %0 not allowed in otherwise empty struct">;
def err_flexible_array_has_nonpod_type : Error<
- "flexible array %0 must have a non-dependent, non-POD type">;
+ "flexible array member %0 of non-POD element type %1">;
def ext_flexible_array_in_struct : Extension<
"%0 may not be nested in a struct due to flexible array member">;
def ext_flexible_array_in_array : Extension<
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index dac070aaae8..6fe91905dc5 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -6139,7 +6139,7 @@ void Sema::ActOnFields(Scope* S,
if (!FD->getType()->isDependentType() &&
!Context.getBaseElementType(FD->getType())->isPODType()) {
Diag(FD->getLocation(), diag::err_flexible_array_has_nonpod_type)
- << FD->getDeclName();
+ << FD->getDeclName() << FD->getType();
FD->setInvalidDecl();
EnclosingDecl->setInvalidDecl();
continue;
diff --git a/clang/test/SemaCXX/flexible-array-test.cpp b/clang/test/SemaCXX/flexible-array-test.cpp
index e58992bc931..02e3f83974e 100644
--- a/clang/test/SemaCXX/flexible-array-test.cpp
+++ b/clang/test/SemaCXX/flexible-array-test.cpp
@@ -41,5 +41,5 @@ struct S {
struct X {
int blah;
- S strings[]; // expected-error {{flexible array 'strings' must have a non-dependent, non-POD type}}
+ S strings[]; // expected-error {{flexible array member 'strings' of non-POD element type 'S []'}}
};
OpenPOWER on IntegriCloud