From: Chris Lattner Date: Tue, 18 Dec 2007 07:03:30 +0000 (+0000) Subject: Fix PR1863: an assertion due to not setting a location on return from X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d52a4578144ab2887912e52eabec58a857a44adb;p=clang Fix PR1863: an assertion due to not setting a location on return from this method. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45153 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/AST/Type.cpp b/AST/Type.cpp index 63f3589769..ccd4630843 100644 --- a/AST/Type.cpp +++ b/AST/Type.cpp @@ -449,9 +449,13 @@ bool Type::isAggregateType() const { // The only variable size types are auto arrays within a function. Structures // cannot contain a VLA member. They can have a flexible array member, however // the structure is still constant size (C99 6.7.2.1p16). -bool Type::isConstantSizeType(ASTContext &Ctx, SourceLocation *loc) const { - if (isa(CanonicalType)) +bool Type::isConstantSizeType(ASTContext &Ctx, SourceLocation *Loc) const { + assert(!isIncompleteType() && "This doesn't make sense for incomplete types"); + if (const VariableArrayType *VAT =dyn_cast(CanonicalType)){ + // The VAT must have a size, as it is known to be complete. + if (Loc) *Loc = VAT->getSizeExpr()->getLocStart(); return false; + } return true; }