]> granicus.if.org Git - clang/commitdiff
PR7698: Make sure we correctly handle the initialization of an array with
authorEli Friedman <eli.friedman@gmail.com>
Sat, 24 Jul 2010 21:19:15 +0000 (21:19 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Sat, 24 Jul 2010 21:19:15 +0000 (21:19 +0000)
dependent size.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109356 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDeclCXX.cpp
test/SemaTemplate/dependent-base-member-init.cpp

index 827eaff92b0303871a032ef33436b16f064c9c0b..975a58ab261d234baea383c84a2a152b66239727 100644 (file)
@@ -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
index 1f131491e62181ad1537aa9d8393b61db3a0fb79..1d4fed3e1d267043005e54450ace9e4ed10f1f52 100644 (file)
@@ -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() {}
+  };
+}