From: Eli Friedman Date: Sat, 24 Jul 2010 21:19:15 +0000 (+0000) Subject: PR7698: Make sure we correctly handle the initialization of an array with X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0f2b97d1b0bfbcec727a386dc9e5cf06051cb29b;p=clang 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 --- 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 struct X0 : T::template apply { X0(int i) : T::template apply(i) { } }; + +// PR7698 +namespace PR7698 { + template + class A { + char mA[sizeof(Type *)]; + A(): mA() {} + }; +}