diff options
| -rw-r--r-- | clang/lib/Sema/SemaInit.cpp | 3 | ||||
| -rw-r--r-- | clang/test/Sema/c89.c | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 2acb482c41e..0cf75464668 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -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(); diff --git a/clang/test/Sema/c89.c b/clang/test/Sema/c89.c index 038f7e537d7..670dd15539f 100644 --- a/clang/test/Sema/c89.c +++ b/clang/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}} */ |

