diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2010-07-24 21:19:15 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2010-07-24 21:19:15 +0000 |
commit | 0f2b97d1b0bfbcec727a386dc9e5cf06051cb29b (patch) | |
tree | f0c2e5a78758a46e32c45547a3784626e065e336 | |
parent | fa9fe0c62aa42dff58365c8015baa6771b21f5ac (diff) |
PR7698: Make sure we correctly handle the initialization of an array with
dependent size.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109356 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaDeclCXX.cpp | 5 | ||||
-rw-r--r-- | test/SemaTemplate/dependent-base-member-init.cpp | 9 |
2 files changed, 10 insertions, 4 deletions
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index 827eaff92b..975a58ab26 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -1285,10 +1285,7 @@ Sema::BuildMemberInitializer(FieldDecl *Member, Expr **Args, for (unsigned i = 0; i < NumArgs; i++) HasDependentArg |= Args[i]->isTypeDependent(); - QualType FieldType = Member->getType(); - if (const ArrayType *Array = Context.getAsArrayType(FieldType)) - FieldType = Array->getElementType(); - if (FieldType->isDependentType() || HasDependentArg) { + if (Member->getType()->isDependentType() || HasDependentArg) { // Can't check initialization for a member of dependent type or when // any of the arguments are type-dependent expressions. OwningExprResult Init diff --git a/test/SemaTemplate/dependent-base-member-init.cpp b/test/SemaTemplate/dependent-base-member-init.cpp index 1f131491e6..1d4fed3e1d 100644 --- a/test/SemaTemplate/dependent-base-member-init.cpp +++ b/test/SemaTemplate/dependent-base-member-init.cpp @@ -57,3 +57,12 @@ template<typename T, typename U> struct X0 : T::template apply<U> { X0(int i) : T::template apply<U>(i) { } }; + +// PR7698 +namespace PR7698 { + template<typename Type> + class A { + char mA[sizeof(Type *)]; + A(): mA() {} + }; +} |