diff options
author | Chris Lattner <sabre@nondot.org> | 2008-08-04 07:31:14 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-08-04 07:31:14 +0000 |
commit | c63a1f276f7b324fd9a4be82098b1c8f7bf30733 (patch) | |
tree | d20bfdf2549bd5906f9e6347e7576871205f6453 /lib/Sema/SemaInit.cpp | |
parent | 0998c65aeab7ad319bec8a93931196c170ed74d8 (diff) |
Finally fix PR2189. This makes a fairly invasive but important change to
move getAsArrayType into ASTContext instead of being a method on type.
This is required because getAsArrayType(const AT), where AT is a typedef
for "int[10]" needs to return ArrayType(const int, 10).
Fixing this greatly simplifies getArrayDecayedType, which is a good sign.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54317 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaInit.cpp')
-rw-r--r-- | lib/Sema/SemaInit.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp index 0078cc149c..1889bafacb 100644 --- a/lib/Sema/SemaInit.cpp +++ b/lib/Sema/SemaInit.cpp @@ -30,7 +30,8 @@ InitListChecker::InitListChecker(Sema *S, InitListExpr *IL, QualType &T) { int InitListChecker::numArrayElements(QualType DeclType) { // FIXME: use a proper constant int maxElements = 0x7FFFFFFF; - if (const ConstantArrayType *CAT = DeclType->getAsConstantArrayType()) { + if (const ConstantArrayType *CAT = + SemaRef->Context.getAsConstantArrayType(DeclType)) { maxElements = static_cast<int>(CAT->getSize().getZExtValue()); } return maxElements; @@ -231,7 +232,8 @@ void InitListChecker::CheckArrayType(InitListExpr *IList, QualType &DeclType, return; } } - if (const VariableArrayType *VAT = DeclType->getAsVariableArrayType()) { + if (const VariableArrayType *VAT = + SemaRef->Context.getAsVariableArrayType(DeclType)) { // Check for VLAs; in standard C it would be possible to check this // earlier, but I don't know where clang accepts VLAs (gcc accepts // them in all sorts of strange places). @@ -243,7 +245,8 @@ void InitListChecker::CheckArrayType(InitListExpr *IList, QualType &DeclType, } int maxElements = numArrayElements(DeclType); - QualType elementType = DeclType->getAsArrayType()->getElementType(); + QualType elementType = SemaRef->Context.getAsArrayType(DeclType) + ->getElementType(); int numElements = 0; for (int i = 0; i < maxElements; ++i, ++numElements) { // Don't attempt to go past the end of the init list |