aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2010-07-24 21:19:15 +0000
committerEli Friedman <eli.friedman@gmail.com>2010-07-24 21:19:15 +0000
commit0f2b97d1b0bfbcec727a386dc9e5cf06051cb29b (patch)
treef0c2e5a78758a46e32c45547a3784626e065e336
parentfa9fe0c62aa42dff58365c8015baa6771b21f5ac (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.cpp5
-rw-r--r--test/SemaTemplate/dependent-base-member-init.cpp9
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() {}
+ };
+}