Add some more checking for compound literals.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51300 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index e5ac14e..e85ad03 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -738,7 +738,20 @@
//assert((InitExpr != 0) && "ActOnCompoundLiteral(): missing expression");
Expr *literalExpr = static_cast<Expr*>(InitExpr);
- // FIXME: add more semantic analysis (C99 6.5.2.5).
+ if (literalType->isArrayType()) {
+ if (literalType->getAsVariableArrayType())
+ return Diag(LParenLoc,
+ diag::err_variable_object_no_init,
+ SourceRange(LParenLoc,
+ literalExpr->getSourceRange().getEnd()));
+ } else if (literalType->isIncompleteType()) {
+ return Diag(LParenLoc,
+ diag::err_typecheck_decl_incomplete_type,
+ literalType.getAsString(),
+ SourceRange(LParenLoc,
+ literalExpr->getSourceRange().getEnd()));
+ }
+
if (CheckInitializerTypes(literalExpr, literalType))
return true;