From: Eli Friedman Date: Sun, 24 Apr 2011 22:14:22 +0000 (+0000) Subject: PR4304: Add warning for designators in strict c89 mode. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a47317bbeef839ef86323e3feacd9962ca9c383a;p=clang PR4304: Add warning for designators in strict c89 mode. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130117 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp index 2acb482c41..0cf7546466 100644 --- a/lib/Sema/SemaInit.cpp +++ b/lib/Sema/SemaInit.cpp @@ -1976,6 +1976,9 @@ ExprResult Sema::ActOnDesignatedInitializer(Designation &Desig, Loc, GNUSyntax, Init.takeAs()); 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(); diff --git a/test/Sema/c89.c b/test/Sema/c89.c index 038f7e537d..670dd15539 100644 --- a/test/Sema/c89.c +++ b/test/Sema/c89.c @@ -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}} */