From 0f2b97d1b0bfbcec727a386dc9e5cf06051cb29b Mon Sep 17 00:00:00 2001 From: Eli Friedman Date: Sat, 24 Jul 2010 21:19:15 +0000 Subject: [PATCH] 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 --- lib/Sema/SemaDeclCXX.cpp | 5 +---- 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 struct X0 : T::template apply { X0(int i) : T::template apply(i) { } }; + +// PR7698 +namespace PR7698 { + template + class A { + char mA[sizeof(Type *)]; + A(): mA() {} + }; +} -- 2.50.1