]> granicus.if.org Git - clang/commitdiff
PR3344: Downgrade "too many braces around scalar initializer" to a warning.
authorEli Friedman <eli.friedman@gmail.com>
Sat, 14 Aug 2010 03:14:53 +0000 (03:14 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Sat, 14 Aug 2010 03:14:53 +0000 (03:14 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111067 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/SemaInit.cpp
test/Sema/array-init.c

index 486002292d1b4b4a4b9fba29238156d13b1c3c1f..7cdc9f49c7295d8e400664c47da00d690e8ddc30 100644 (file)
@@ -1831,7 +1831,7 @@ def warn_missing_field_initializers : Warning<
   InGroup<MissingFieldInitializers>, 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<
index ce96856f3fe65d1e098b3ef4b94351ab55cf6664..e1fcab0c4008b4f5c1e9ab7f30afb62d3a7e7815 100644 (file)
@@ -740,13 +740,13 @@ void InitListChecker::CheckScalarType(const InitializedEntity &Entity,
                                       unsigned &StructuredIndex) {
   if (Index < IList->getNumInits()) {
     Expr *expr = IList->getInit(Index);
-    if (isa<InitListExpr>(expr)) {
-      SemaRef.Diag(IList->getLocStart(),
-                    diag::err_many_braces_around_scalar_init)
-        << IList->getSourceRange();
-      hadError = true;
-      ++Index;
-      ++StructuredIndex;
+    if (InitListExpr *SubIList = dyn_cast<InitListExpr>(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<DesignatedInitExpr>(expr)) {
       SemaRef.Diag(expr->getSourceRange().getBegin(),
index c042943516dd8c816addba27318c1f7ac5857c2d..0ee22c0f1994891a6a5fd127a2f77b3fa232cf94 100644 (file)
@@ -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() {