summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema
diff options
context:
space:
mode:
authorTanya Lattner <tonic@nondot.org>2010-03-07 04:17:15 +0000
committerTanya Lattner <tonic@nondot.org>2010-03-07 04:17:15 +0000
commit5029d56cc1d26d38a3200ca7f7af4ecc26a4e0d0 (patch)
tree1c8243e712061e1d0b00d28200707e7f4cae4aea /clang/lib/Sema
parent03b3eba1513ef5c67c84cbdbeba8c4b772b3c856 (diff)
downloadbcm5719-llvm-5029d56cc1d26d38a3200ca7f7af4ecc26a4e0d0.tar.gz
bcm5719-llvm-5029d56cc1d26d38a3200ca7f7af4ecc26a4e0d0.zip
Implement missing-braces warning and add a test case.
llvm-svn: 97893
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r--clang/lib/Sema/SemaInit.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp
index bf9f73c9615..386bb1fea37 100644
--- a/clang/lib/Sema/SemaInit.cpp
+++ b/clang/lib/Sema/SemaInit.cpp
@@ -18,6 +18,7 @@
#include "SemaInit.h"
#include "Lookup.h"
#include "Sema.h"
+#include "clang/Lex/Preprocessor.h"
#include "clang/Parse/Designator.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/ExprCXX.h"
@@ -497,6 +498,20 @@ void InitListChecker::CheckImplicitInitList(const InitializedEntity &Entity,
= ParentIList->getInit(EndIndex)->getSourceRange().getEnd();
StructuredSubobjectInitList->setRBraceLoc(EndLoc);
}
+
+ // Warn about missing braces.
+ if (T->isArrayType() || T->isRecordType()) {
+ SemaRef.Diag(StructuredSubobjectInitList->getLocStart(),
+ + diag::warn_missing_braces)
+ << StructuredSubobjectInitList->getSourceRange()
+ << CodeModificationHint::CreateInsertion(
+ StructuredSubobjectInitList->getLocStart(),
+ llvm::StringRef("{"))
+ << CodeModificationHint::CreateInsertion(
+ SemaRef.PP.getLocForEndOfToken(
+StructuredSubobjectInitList->getLocEnd()),
+ llvm::StringRef("}"));
+ }
}
void InitListChecker::CheckExplicitInitList(const InitializedEntity &Entity,
OpenPOWER on IntegriCloud