提问人:Morniak 提问时间:11/17/2023 更新时间:11/17/2023 访问量:40
带有 Swift 扩展宏的宏“Y”未涵盖与“X”的一致性
Conformance to 'X' is not covered by macro 'Y' with Swift extension macro
问:
使用此宏:
// Definition:
@attached(extension, names: arbitrary)
public macro AutoDomainError() = #externalMacro(module: "...", type: "...")
// Implementation:
public struct AutoDomainErrorMacro: ExtensionMacro {
public static func expansion(
of node: SwiftSyntax.AttributeSyntax,
attachedTo declaration: some SwiftSyntax.DeclGroupSyntax,
providingExtensionsOf type: some SwiftSyntax.TypeSyntaxProtocol,
conformingTo protocols: [SwiftSyntax.TypeSyntax],
in context: some SwiftSyntaxMacros.MacroExpansionContext
) throws -> [SwiftSyntax.ExtensionDeclSyntax] {
let extensionDecl = try ExtensionDeclSyntax("extension \(type.trimmed): FormatableDomainError") {
}
return [extensionDecl]
}
}
以及文件中的这段代码:main.swift
protocol FormatableDomainError {
}
@AutoDomainError
enum TestError {
case testErrorCase
}
// Code generated by the macro:
// extension TestError: FormatableDomainError {
// }
我收到这个编译错误:在宏生成的代码上。Conformance to 'FormatableDomainError' is not covered by macro 'AutoDomainError'
宏生成的代码对我来说看起来非常好,所以我没有收到错误。我尝试使用宏的 和 参数,但似乎没有任何效果。names
conformances
@attached
答: 暂无答案
评论