Skip to content

Commit f2a64d9

Browse files
authored
[Macros] Implement compiler plugin type signature requirements (#1042)
Implement `_genericSignature` and `_typeSignature` requirements in `_CompilerPlugin`. This enables type checking for macro plugins. Friend PR: swiftlang/swift#61861
1 parent ce11d7a commit f2a64d9

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

Sources/_SwiftSyntaxMacros/Macro.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,26 @@ extension Macro {
5656
return (UnsafePointer(result), count: buffer.count)
5757
}
5858
}
59+
60+
public static func _genericSignature() -> (UnsafePointer<UInt8>?, count: Int) {
61+
guard let genericSignature = genericSignature else {
62+
return (nil, count: 0)
63+
}
64+
var signature = "\(genericSignature)"
65+
return signature.withUTF8 { buffer in
66+
let result = UnsafeMutablePointer<UInt8>.allocate(capacity: buffer.count)
67+
result.initialize(from: buffer.baseAddress!, count: buffer.count)
68+
return (UnsafePointer(result), count: buffer.count)
69+
}
70+
}
71+
72+
public static func _typeSignature() -> (UnsafePointer<UInt8>, count: Int) {
73+
var signature = "\(signature)"
74+
return signature.withUTF8 { buffer in
75+
let result = UnsafeMutablePointer<UInt8>.allocate(capacity: buffer.count)
76+
result.initialize(from: buffer.baseAddress!, count: buffer.count)
77+
return (UnsafePointer(result), count: buffer.count)
78+
}
79+
}
5980
}
6081
#endif

0 commit comments

Comments
 (0)