带有 Swift 扩展宏的宏“Y”未涵盖与“X”的一致性

Conformance to 'X' is not covered by macro 'Y' with Swift extension macro

提问人:Morniak 提问时间:11/17/2023 更新时间:11/17/2023 访问量:40

问:

使用此宏:

// 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'

宏生成的代码对我来说看起来非常好,所以我没有收到错误。我尝试使用宏的 和 参数,但似乎没有任何效果。namesconformances@attached

swift-宏

评论


答: 暂无答案