mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[AST] Introduce BuiltinProtocolConformance
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
//
|
||||
// This source file is part of the Swift.org open source project
|
||||
//
|
||||
// Copyright (c) 2014 - 2018 Apple Inc. and the Swift project authors
|
||||
// Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
|
||||
// Licensed under Apache License v2.0 with Runtime Library Exception
|
||||
//
|
||||
// See https://swift.org/LICENSE.txt for license information
|
||||
@@ -845,6 +845,8 @@ void Serializer::writeBlockInfoBlock() {
|
||||
decls_block::SPECIALIZED_PROTOCOL_CONFORMANCE);
|
||||
BLOCK_RECORD_WITH_NAMESPACE(sil_block,
|
||||
decls_block::INHERITED_PROTOCOL_CONFORMANCE);
|
||||
BLOCK_RECORD_WITH_NAMESPACE(sil_block,
|
||||
decls_block::BUILTIN_PROTOCOL_CONFORMANCE);
|
||||
BLOCK_RECORD_WITH_NAMESPACE(sil_block,
|
||||
decls_block::NORMAL_PROTOCOL_CONFORMANCE_ID);
|
||||
BLOCK_RECORD_WITH_NAMESPACE(sil_block,
|
||||
@@ -1506,6 +1508,17 @@ Serializer::writeConformance(ProtocolConformanceRef conformanceRef,
|
||||
writeConformance(conf->getInheritedConformance(), abbrCodes, genericEnv);
|
||||
break;
|
||||
}
|
||||
case ProtocolConformanceKind::Builtin:
|
||||
auto builtin = cast<BuiltinProtocolConformance>(conformance);
|
||||
unsigned abbrCode = abbrCodes[BuiltinProtocolConformanceLayout::Code];
|
||||
auto typeID = addTypeRef(builtin->getType());
|
||||
auto protocolID = addDeclRef(builtin->getProtocol());
|
||||
BuiltinProtocolConformanceLayout::emitRecord(Out, ScratchRecord, abbrCode,
|
||||
typeID, protocolID,
|
||||
builtin->getConformances().size());
|
||||
|
||||
writeConformances(builtin->getConformances(), abbrCodes);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4588,6 +4601,7 @@ void Serializer::writeAllDeclsAndTypes() {
|
||||
registerDeclTypeAbbr<SpecializedProtocolConformanceLayout>();
|
||||
registerDeclTypeAbbr<InheritedProtocolConformanceLayout>();
|
||||
registerDeclTypeAbbr<InvalidProtocolConformanceLayout>();
|
||||
registerDeclTypeAbbr<BuiltinProtocolConformanceLayout>();
|
||||
registerDeclTypeAbbr<NormalProtocolConformanceIdLayout>();
|
||||
registerDeclTypeAbbr<ProtocolConformanceXrefLayout>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user