summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclCXX.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2009-09-02 17:10:17 +0000
committerFariborz Jahanian <fjahanian@apple.com>2009-09-02 17:10:17 +0000
commitfc60ca8801c74e25d8a1afb9be707a7fcb561de2 (patch)
tree2c7234ef0dc8acb60bc67b1f6e531201e937be56 /clang/lib/Sema/SemaDeclCXX.cpp
parent87d69e80b15b277f24c92b38dc8a7e1b51f0930f (diff)
downloadbcm5719-llvm-fc60ca8801c74e25d8a1afb9be707a7fcb561de2.tar.gz
bcm5719-llvm-fc60ca8801c74e25d8a1afb9be707a7fcb561de2.zip
Allow null initialization of scalara data members
in constructors's initializer list. pr4854 llvm-svn: 80802
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index f22a3e88b72..f80a0b88e59 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -786,11 +786,17 @@ Sema::BuildMemberInitializer(FieldDecl *Member, Expr **Args,
C = PerformInitializationByConstructor(
FieldType, (Expr **)Args, NumArgs, IdLoc,
SourceRange(IdLoc, RParenLoc), Member->getDeclName(), IK_Direct);
- } else if (NumArgs != 1) {
+ } else if (NumArgs != 1 && NumArgs != 0) {
return Diag(IdLoc, diag::err_mem_initializer_mismatch)
<< Member->getDeclName() << SourceRange(IdLoc, RParenLoc);
} else if (!HasDependentArg) {
- Expr *NewExp = (Expr*)Args[0];
+ Expr *NewExp;
+ if (NumArgs == 0) {
+ NewExp = new (Context) CXXZeroInitValueExpr(FieldType, IdLoc, RParenLoc);
+ NumArgs = 1;
+ }
+ else
+ NewExp = (Expr*)Args[0];
if (PerformCopyInitialization(NewExp, FieldType, "passing"))
return true;
Args[0] = NewExp;
OpenPOWER on IntegriCloud