diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2009-09-02 17:10:17 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2009-09-02 17:10:17 +0000 |
commit | fc60ca8801c74e25d8a1afb9be707a7fcb561de2 (patch) | |
tree | 2c7234ef0dc8acb60bc67b1f6e531201e937be56 /clang/lib/Sema/SemaDeclCXX.cpp | |
parent | 87d69e80b15b277f24c92b38dc8a7e1b51f0930f (diff) | |
download | bcm5719-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.cpp | 10 |
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; |