From: Eli Friedman Date: Sat, 14 Aug 2010 03:14:53 +0000 (+0000) Subject: PR3344: Downgrade "too many braces around scalar initializer" to a warning. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=09865a903affa9c08687859d8de65470064c7bc2;p=clang PR3344: Downgrade "too many braces around scalar initializer" to a warning. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111067 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index 486002292d..7cdc9f49c7 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -1831,7 +1831,7 @@ def warn_missing_field_initializers : Warning< InGroup, DefaultIgnore; def warn_braces_around_scalar_init : Warning< "braces around scalar initializer">; -def err_many_braces_around_scalar_init : Error< +def warn_many_braces_around_scalar_init : ExtWarn< "too many braces around scalar initializer">; def err_empty_scalar_initializer : Error<"scalar initializer cannot be empty">; def err_illegal_initializer : Error< diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp index ce96856f3f..e1fcab0c40 100644 --- a/lib/Sema/SemaInit.cpp +++ b/lib/Sema/SemaInit.cpp @@ -740,13 +740,13 @@ void InitListChecker::CheckScalarType(const InitializedEntity &Entity, unsigned &StructuredIndex) { if (Index < IList->getNumInits()) { Expr *expr = IList->getInit(Index); - if (isa(expr)) { - SemaRef.Diag(IList->getLocStart(), - diag::err_many_braces_around_scalar_init) - << IList->getSourceRange(); - hadError = true; - ++Index; - ++StructuredIndex; + if (InitListExpr *SubIList = dyn_cast(expr)) { + SemaRef.Diag(SubIList->getLocStart(), + diag::warn_many_braces_around_scalar_init) + << SubIList->getSourceRange(); + + CheckScalarType(Entity, SubIList, DeclType, Index, StructuredList, + StructuredIndex); return; } else if (isa(expr)) { SemaRef.Diag(expr->getSourceRange().getBegin(), diff --git a/test/Sema/array-init.c b/test/Sema/array-init.c index c042943516..0ee22c0f19 100644 --- a/test/Sema/array-init.c +++ b/test/Sema/array-init.c @@ -210,7 +210,7 @@ struct bittest bittestvar = {1, 2, 3, 4}; //expected-warning{{excess elements in // Not completely sure what should happen here... int u1 = {}; //expected-warning{{use of GNU empty initializer extension}} expected-error{{scalar initializer cannot be empty}} -int u2 = {{3}}; //expected-error{{too many braces around scalar initializer}} +int u2 = {{3}}; //expected-warning{{too many braces around scalar initializer}} // PR2362 void varArray() {