in src/objc-renderer.ts [918:959]
function protocolSection(protocol: ObjC.Protocol) {
const nullability = nullabilityMacro(protocol.nullability);
const protocolComments = protocol.comments.map(toCommentString).join('\n');
const protocolCommentsSection =
codeSectionForCodeStringWithoutExtraSpace(protocolComments);
const protocolSection = codeSectionForCodeString(
`@protocol ${protocol.name}${implementedProtocolsString(
protocol.implementedProtocols,
)}`,
);
const propertiesStr = protocol.properties.map(toPropertyString).join('\n');
const propertiesSection = codeSectionForCodeString(propertiesStr);
const implementedProtocols = implementedProtocolsIncludingNSObjectAndADTInit(
protocol.implementedProtocols,
);
const classMethodsStr = protocol.classMethods
.filter((method) => includeMethodInHeader(implementedProtocols, method))
.map(toClassMethodHeaderString)
.join('\n\n');
const classMethodsSection = codeSectionForCodeString(classMethodsStr);
const instanceMethodsStr = protocol.instanceMethods
.filter((method) => includeMethodInHeader(implementedProtocols, method))
.map(toInstanceMethodHeaderString)
.join('\n\n');
const instanceMethodsSection = codeSectionForCodeString(instanceMethodsStr);
return (
(nullability != null ? codeSectionForCodeString(nullability.prefix) : '') +
protocolCommentsSection +
protocolSection +
propertiesSection +
classMethodsSection +
instanceMethodsSection +
'@end\n\n' +
(nullability != null ? codeSectionForCodeString(nullability.postfix) : '')
);
}