diff options
Diffstat (limited to 'lldb/source/Symbol/ClangASTContext.cpp')
-rw-r--r-- | lldb/source/Symbol/ClangASTContext.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp index 6d61c861f82..2ffb6d62bae 100644 --- a/lldb/source/Symbol/ClangASTContext.cpp +++ b/lldb/source/Symbol/ClangASTContext.cpp @@ -2593,14 +2593,16 @@ ClangASTContext::IsArrayType (lldb::opaque_compiler_type_t type, { default: break; - + case clang::Type::ConstantArray: if (element_type_ptr) element_type_ptr->SetCompilerType (getASTContext(), llvm::cast<clang::ConstantArrayType>(qual_type)->getElementType()); if (size) *size = llvm::cast<clang::ConstantArrayType>(qual_type)->getSize().getLimitedValue(ULLONG_MAX); + if (is_incomplete) + *is_incomplete = false; return true; - + case clang::Type::IncompleteArray: if (element_type_ptr) element_type_ptr->SetCompilerType (getASTContext(), llvm::cast<clang::IncompleteArrayType>(qual_type)->getElementType()); @@ -2609,21 +2611,25 @@ ClangASTContext::IsArrayType (lldb::opaque_compiler_type_t type, if (is_incomplete) *is_incomplete = true; return true; - + case clang::Type::VariableArray: if (element_type_ptr) element_type_ptr->SetCompilerType (getASTContext(), llvm::cast<clang::VariableArrayType>(qual_type)->getElementType()); if (size) *size = 0; + if (is_incomplete) + *is_incomplete = false; return true; - + case clang::Type::DependentSizedArray: if (element_type_ptr) element_type_ptr->SetCompilerType (getASTContext(), llvm::cast<clang::DependentSizedArrayType>(qual_type)->getElementType()); if (size) *size = 0; + if (is_incomplete) + *is_incomplete = false; return true; - + case clang::Type::Typedef: return IsArrayType(llvm::cast<clang::TypedefType>(qual_type)->getDecl()->getUnderlyingType().getAsOpaquePtr(), element_type_ptr, |