mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[api-digester] Teach the api-digester about hasMissingDesignatedInitializers
Because we won’t be serializing this attribute, add custom diagnostics for the cases where: - We add @_hasMissingDesignatedInits to an open class, which means subclasses won’t be able to inherit its inits - We remove @_inheritsConvenienceInitializers, which means APIs are removed
This commit is contained in:
committed by
Robert Widmann
parent
511db0c90a
commit
4d731735d2
@@ -126,7 +126,9 @@ SDKNodeTypeAlias::SDKNodeTypeAlias(SDKNodeInitInfo Info):
|
||||
SDKNodeDeclType::SDKNodeDeclType(SDKNodeInitInfo Info):
|
||||
SDKNodeDecl(Info, SDKNodeKind::DeclType), SuperclassUsr(Info.SuperclassUsr),
|
||||
SuperclassNames(Info.SuperclassNames),
|
||||
EnumRawTypeName(Info.EnumRawTypeName), IsExternal(Info.IsExternal) {}
|
||||
EnumRawTypeName(Info.EnumRawTypeName), IsExternal(Info.IsExternal),
|
||||
HasMissingDesignatedInitializers(Info.HasMissingDesignatedInitializers),
|
||||
InheritsConvenienceInitializers(Info.InheritsConvenienceInitializers) {}
|
||||
|
||||
SDKNodeConformance::SDKNodeConformance(SDKNodeInitInfo Info):
|
||||
SDKNode(Info, SDKNodeKind::Conformance),
|
||||
@@ -1403,6 +1405,8 @@ SDKNodeInitInfo::SDKNodeInitInfo(SDKContext &Ctx, ValueDecl *VD)
|
||||
SuperclassNames.push_back(getPrintedName(Ctx, T->getCanonicalType()));
|
||||
}
|
||||
}
|
||||
HasMissingDesignatedInitializers = CD->hasMissingDesignatedInitializers();
|
||||
InheritsConvenienceInitializers = CD->inheritsSuperclassInitializers();
|
||||
}
|
||||
|
||||
if (auto *FD = dyn_cast<FuncDecl>(VD)) {
|
||||
@@ -1975,6 +1979,10 @@ void SDKNodeDeclType::jsonize(json::Output &out) {
|
||||
output(out, KeyKind::KK_superclassUsr, SuperclassUsr);
|
||||
output(out, KeyKind::KK_enumRawTypeName, EnumRawTypeName);
|
||||
output(out, KeyKind::KK_isExternal, IsExternal);
|
||||
output(out, KeyKind::KK_hasMissingDesignatedInitializers,
|
||||
HasMissingDesignatedInitializers);
|
||||
output(out, KeyKind::KK_inheritsConvenienceInitializers,
|
||||
InheritsConvenienceInitializers);
|
||||
out.mapOptional(getKeyContent(Ctx, KeyKind::KK_superclassNames).data(), SuperclassNames);
|
||||
out.mapOptional(getKeyContent(Ctx, KeyKind::KK_conformances).data(), Conformances);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user