File tree Expand file tree Collapse file tree 3 files changed +11
-5
lines changed
SwiftCompilerPluginMessageHandling
SwiftSyntaxMacroExpansion
SwiftSyntaxMacros/MacroProtocols Expand file tree Collapse file tree 3 files changed +11
-5
lines changed Original file line number Diff line number Diff line change @@ -168,7 +168,7 @@ private extension MacroRole {
168
168
case . memberAttribute: self = . memberAttribute
169
169
case . member: self = . member
170
170
case . peer: self = . peer
171
- case . conformance: self = . conformance
171
+ case . conformance: self = . extension
172
172
case . codeItem: self = . codeItem
173
173
case . extension: self = . extension
174
174
}
Original file line number Diff line number Diff line change @@ -273,7 +273,13 @@ public func expandAttachedMacroWithoutCollapsing<Context: MacroExpansionContext>
273
273
throw MacroExpansionError . declarationNotDeclGroup
274
274
}
275
275
276
- guard let extendedType = extendedType else {
276
+ let extensionOf : TypeSyntax
277
+ if let extendedType {
278
+ extensionOf = extendedType
279
+ } else if let identified = declarationNode. asProtocol ( IdentifiedDeclSyntax . self) {
280
+ // Fallback for old compilers with a new plugin, where
281
+ extensionOf = TypeSyntax ( SimpleTypeIdentifierSyntax ( name: identified. identifier) )
282
+ } else {
277
283
throw MacroExpansionError . noExtendedTypeSyntax
278
284
}
279
285
@@ -287,7 +293,7 @@ public func expandAttachedMacroWithoutCollapsing<Context: MacroExpansionContext>
287
293
return try attachedMacro. expansion (
288
294
of: attributeNode,
289
295
attachedTo: node,
290
- providingExtensionsOf: extendedType ,
296
+ providingExtensionsOf: extensionOf ,
291
297
conformingTo: protocols,
292
298
in: context
293
299
)
Original file line number Diff line number Diff line change @@ -51,13 +51,13 @@ extension ConformanceMacro {
51
51
for (proto, whereClause) in newConformances {
52
52
let decl : DeclSyntax =
53
53
"""
54
- extension \( type. trimmed) : \( proto) {}
54
+ extension \( type. trimmed) : \( proto. trimmed ) {}
55
55
"""
56
56
57
57
var extensionDecl = decl. cast ( ExtensionDeclSyntax . self)
58
58
59
59
if let whereClause {
60
- extensionDecl = extensionDecl. with ( \. genericWhereClause, whereClause)
60
+ extensionDecl = extensionDecl. with ( \. genericWhereClause, whereClause. trimmed )
61
61
}
62
62
63
63
extensions. append ( extensionDecl)
You can’t perform that action at this time.
0 commit comments