]> granicus.if.org Git - clang/commitdiff
PR4304: Add warning for designators in strict c89 mode.
authorEli Friedman <eli.friedman@gmail.com>
Sun, 24 Apr 2011 22:14:22 +0000 (22:14 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Sun, 24 Apr 2011 22:14:22 +0000 (22:14 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130117 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaInit.cpp
test/Sema/c89.c

index 2acb482c41e3ad979299614ad9ff811202c6c19b..0cf75464668b40d4c6c2281323334f51f49933d0 100644 (file)
@@ -1976,6 +1976,9 @@ ExprResult Sema::ActOnDesignatedInitializer(Designation &Desig,
                                  Loc, GNUSyntax, Init.takeAs<Expr>());
 
   if (getLangOptions().CPlusPlus)
+    Diag(DIE->getLocStart(), diag::ext_designated_init_cxx)
+      << DIE->getSourceRange();
+  else if (!getLangOptions().C99)
     Diag(DIE->getLocStart(), diag::ext_designated_init)
       << DIE->getSourceRange();
 
index 038f7e537d76a8d45c85f94c352d878ca4b354bf..670dd15539f033551e46fee4973a98a1e66b2c9d 100644 (file)
@@ -80,3 +80,5 @@ void test13b() {
 
 /* Make sure we allow *test14 as a "function designator" */
 int test14() { return (&*test14)(); }
+
+int test15[5] = { [2] = 1 }; /* expected-warning {{designated initializers are a C99 feature}} */