}
};
- CVType field_list = m_index.tpi().getType(tag.asTag().FieldList);
+ CVType field_list_cvt = m_index.tpi().getType(tag.asTag().FieldList);
ProcessTpiStream process(m_index, *ti, tag, m_parent_types);
- llvm::Error error = visitMemberRecordStream(field_list.data(), process);
- if (error)
+ FieldListRecord field_list;
+ if (llvm::Error error = TypeDeserializer::deserializeAs<FieldListRecord>(
+ field_list_cvt, field_list))
+ llvm::consumeError(std::move(error));
+ if (llvm::Error error = visitMemberRecordStream(field_list.Data, process))
llvm::consumeError(std::move(error));
}
CVType field_list_cvt = m_index.tpi().getType(field_list_ti);
if (field_list_cvt.kind() != LF_FIELDLIST)
return false;
+ FieldListRecord field_list;
+ if (llvm::Error error = TypeDeserializer::deserializeAs<FieldListRecord>(
+ field_list_cvt, field_list))
+ llvm::consumeError(std::move(error));
// Visit all members of this class, then perform any finalization necessary
// to complete the class.
CompilerType ct = ToCompilerType(tag_qt);
UdtRecordCompleter completer(best_ti, ct, tag, *this, m_index,
m_cxx_record_map);
- auto error =
- llvm::codeview::visitMemberRecordStream(field_list_cvt.data(), completer);
+ llvm::Error error =
+ llvm::codeview::visitMemberRecordStream(field_list.Data, completer);
completer.complete();
status.resolved = true;
- if (!error)
- return true;
-
- llvm::consumeError(std::move(error));
- return false;
+ if (error) {
+ llvm::consumeError(std::move(error));
+ return false;
+ }
+ return true;
}
clang::QualType PdbAstBuilder::CreateSimpleType(TypeIndex ti) {
}
}
if (!tag_record.FieldList.isSimple()) {
- CVType field_list = m_index.tpi().getType(tag_record.FieldList);
+ CVType field_list_cvt = m_index.tpi().getType(tag_record.FieldList);
+ FieldListRecord field_list;
+ if (llvm::Error error = TypeDeserializer::deserializeAs<FieldListRecord>(
+ field_list_cvt, field_list))
+ llvm::consumeError(std::move(error));
CreateMethodDecl process(m_index, m_clang, func_ti, function_decl,
parent_opaque_ty, func_name, func_ct);
- if (llvm::Error err = visitMemberRecordStream(field_list.data(), process))
+ if (llvm::Error err = visitMemberRecordStream(field_list.Data, process))
llvm::consumeError(std::move(err));
}
}
if (IsTagRecord(class_cvt)) {
TagRecord tag_record = CVTagRecord::create(class_cvt).asTag();
- CVType field_list = index.tpi().getType(tag_record.FieldList);
+ CVType field_list_cvt = index.tpi().getType(tag_record.FieldList);
+ FieldListRecord field_list;
+ if (llvm::Error error =
+ TypeDeserializer::deserializeAs<FieldListRecord>(
+ field_list_cvt, field_list))
+ llvm::consumeError(std::move(error));
FindMembersSize find_members_size(members_info, index.tpi());
- if (llvm::Error err = visitMemberRecordStream(field_list.data(),
+ if (llvm::Error err = visitMemberRecordStream(field_list.Data,
find_members_size)) {
llvm::consumeError(std::move(err));
break;
ContinuationIndex = ClassParent.getEnumRecord().FieldList;
while (ContinuationIndex) {
- CVType FieldList = Types.getType(*ContinuationIndex);
- assert(FieldList.kind() == LF_FIELDLIST);
+ CVType FieldListCVT = Types.getType(*ContinuationIndex);
+ assert(FieldListCVT.kind() == LF_FIELDLIST);
ContinuationIndex.reset();
- cantFail(visitMemberRecordStream(FieldList.data(), *this));
+ FieldListRecord FieldList;
+ cantFail(TypeDeserializer::deserializeAs<FieldListRecord>(FieldListCVT,
+ FieldList));
+ cantFail(visitMemberRecordStream(FieldList.Data, *this));
}
}