Skip to content

Commit 303e5c5

Browse files
authored
Merge pull request #2644 from ahoppen/5.10/fix-retroactive-warnings
[5.10] Fix warnings about retroactive conformances when building swift-syntax 510 with a Swift 6 compiler
2 parents fa8f95c + d60eab9 commit 303e5c5

File tree

4 files changed

+139
-13
lines changed

4 files changed

+139
-13
lines changed

CodeGeneration/Sources/generate-swift-syntax/templates/swiftsyntaxbuilder/SyntaxExpressibleByStringInterpolationConformancesFile.swift

+21-9
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,26 @@ import Utils
1818
let syntaxExpressibleByStringInterpolationConformancesFile = SourceFileSyntax(leadingTrivia: copyrightHeader) {
1919
DeclSyntax("import SwiftSyntax")
2020

21-
for node in SYNTAX_NODES where node.parserFunction != nil {
22-
DeclSyntax("extension \(node.kind.syntaxType): SyntaxExpressibleByStringInterpolation {}")
23-
}
21+
let typesExpressibleByStringInterpolation =
22+
SYNTAX_NODES
23+
.filter { $0.parserFunction != nil }
24+
.map { $0.kind.syntaxType }
25+
// `SyntaxParsable` conformance for collection nodes is hand-written.
26+
+ [
27+
"AccessorDeclListSyntax",
28+
"AttributeListSyntax",
29+
"CodeBlockItemListSyntax",
30+
"MemberBlockItemListSyntax",
31+
]
2432

25-
// `SyntaxParsable` conformance for collection nodes is hand-written.
26-
// We also need to hand-write the corresponding `SyntaxExpressibleByStringInterpolation` conformances.
27-
DeclSyntax("extension AccessorDeclListSyntax: SyntaxExpressibleByStringInterpolation {}")
28-
DeclSyntax("extension AttributeListSyntax: SyntaxExpressibleByStringInterpolation {}")
29-
DeclSyntax("extension CodeBlockItemListSyntax: SyntaxExpressibleByStringInterpolation {}")
30-
DeclSyntax("extension MemberBlockItemListSyntax: SyntaxExpressibleByStringInterpolation {}")
33+
for type in typesExpressibleByStringInterpolation {
34+
DeclSyntax("extension \(type): SyntaxExpressibleByStringInterpolation {}")
35+
DeclSyntax(
36+
"""
37+
#if compiler(>=6)
38+
extension \(type): @retroactive ExpressibleByStringInterpolation {}
39+
#endif
40+
"""
41+
)
42+
}
3143
}

Sources/SwiftSyntaxBuilder/ConvenienceInitializers.swift

+20-3
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ extension BinaryOperatorExprSyntax {
6868

6969
// MARK: - BooleanLiteralExpr
7070

71-
extension BooleanLiteralExprSyntax: ExpressibleByBooleanLiteral {
71+
extension BooleanLiteralExprSyntax {
7272
public init(_ value: Bool) {
7373
self.init(literal: value ? .keyword(.true) : .keyword(.false))
7474
}
@@ -77,6 +77,11 @@ extension BooleanLiteralExprSyntax: ExpressibleByBooleanLiteral {
7777
self.init(value)
7878
}
7979
}
80+
#if compiler(>=6)
81+
extension BooleanLiteralExprSyntax: @retroactive ExpressibleByBooleanLiteral {}
82+
#else
83+
extension BooleanLiteralExprSyntax: ExpressibleByBooleanLiteral {}
84+
#endif
8085

8186
// MARK: - CatchClause
8287

@@ -153,7 +158,7 @@ extension ExprSyntax {
153158

154159
// MARK: - FloatLiteralExprSyntax
155160

156-
extension FloatLiteralExprSyntax: ExpressibleByFloatLiteral {
161+
extension FloatLiteralExprSyntax {
157162
public init(_ value: Float) {
158163
self.init(literal: .floatLiteral(String(value)))
159164
}
@@ -163,6 +168,12 @@ extension FloatLiteralExprSyntax: ExpressibleByFloatLiteral {
163168
}
164169
}
165170

171+
#if compiler(>=6)
172+
extension FloatLiteralExprSyntax: @retroactive ExpressibleByFloatLiteral {}
173+
#else
174+
extension FloatLiteralExprSyntax: ExpressibleByFloatLiteral {}
175+
#endif
176+
166177
// MARK: - FunctionCallExpr
167178

168179
extension FunctionCallExprSyntax {
@@ -190,7 +201,7 @@ extension FunctionCallExprSyntax {
190201

191202
// MARK: - IntegerLiteralExpr
192203

193-
extension IntegerLiteralExprSyntax: ExpressibleByIntegerLiteral {
204+
extension IntegerLiteralExprSyntax {
194205
public init(_ value: Int) {
195206
self.init(literal: .integerLiteral(String(value)))
196207
}
@@ -200,6 +211,12 @@ extension IntegerLiteralExprSyntax: ExpressibleByIntegerLiteral {
200211
}
201212
}
202213

214+
#if compiler(>=6)
215+
extension IntegerLiteralExprSyntax: @retroactive ExpressibleByIntegerLiteral {}
216+
#else
217+
extension IntegerLiteralExprSyntax: ExpressibleByIntegerLiteral {}
218+
#endif
219+
203220
// MARK: - StringLiteralExpr
204221

205222
extension String {

Sources/SwiftSyntaxBuilder/Syntax+StringInterpolation.swift

+13-1
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,12 @@ extension TokenSyntax: SyntaxExpressibleByStringInterpolation {
444444
}
445445
}
446446

447+
#if compiler(>=6)
448+
// Silence warning that TokenSyntax has a retroactive conformance to `ExpressibleByStringInterpolation` through
449+
// `SyntaxExpressibleByStringInterpolation`.
450+
extension TokenSyntax: @retroactive ExpressibleByStringInterpolation {}
451+
#endif
452+
447453
// MARK: - Trivia expressible as string
448454

449455
extension TriviaPiece {
@@ -466,7 +472,7 @@ struct UnexpectedTrivia: DiagnosticMessage {
466472

467473
}
468474

469-
extension Trivia: ExpressibleByStringInterpolation {
475+
extension Trivia {
470476
public init(stringInterpolation: String.StringInterpolation) {
471477
var text = String(stringInterpolation: stringInterpolation)
472478
let pieces = text.withUTF8 { (buf) -> [TriviaPiece] in
@@ -484,3 +490,9 @@ extension Trivia: ExpressibleByStringInterpolation {
484490
self.init(stringInterpolation: interpolation)
485491
}
486492
}
493+
494+
#if compiler(>=6)
495+
extension Trivia: @retroactive ExpressibleByStringInterpolation {}
496+
#else
497+
extension Trivia: ExpressibleByStringInterpolation {}
498+
#endif

Sources/SwiftSyntaxBuilder/generated/SyntaxExpressibleByStringInterpolationConformances.swift

+85
Original file line numberDiff line numberDiff line change
@@ -16,42 +16,127 @@ import SwiftSyntax
1616

1717
extension AccessorBlockSyntax: SyntaxExpressibleByStringInterpolation {}
1818

19+
#if compiler(>=6)
20+
extension AccessorBlockSyntax: @retroactive ExpressibleByStringInterpolation {}
21+
#endif
22+
1923
extension AccessorDeclSyntax: SyntaxExpressibleByStringInterpolation {}
2024

25+
#if compiler(>=6)
26+
extension AccessorDeclSyntax: @retroactive ExpressibleByStringInterpolation {}
27+
#endif
28+
2129
extension AttributeSyntax: SyntaxExpressibleByStringInterpolation {}
2230

31+
#if compiler(>=6)
32+
extension AttributeSyntax: @retroactive ExpressibleByStringInterpolation {}
33+
#endif
34+
2335
extension CatchClauseSyntax: SyntaxExpressibleByStringInterpolation {}
2436

37+
#if compiler(>=6)
38+
extension CatchClauseSyntax: @retroactive ExpressibleByStringInterpolation {}
39+
#endif
40+
2541
extension ClosureParameterSyntax: SyntaxExpressibleByStringInterpolation {}
2642

43+
#if compiler(>=6)
44+
extension ClosureParameterSyntax: @retroactive ExpressibleByStringInterpolation {}
45+
#endif
46+
2747
extension CodeBlockItemSyntax: SyntaxExpressibleByStringInterpolation {}
2848

49+
#if compiler(>=6)
50+
extension CodeBlockItemSyntax: @retroactive ExpressibleByStringInterpolation {}
51+
#endif
52+
2953
extension DeclSyntax: SyntaxExpressibleByStringInterpolation {}
3054

55+
#if compiler(>=6)
56+
extension DeclSyntax: @retroactive ExpressibleByStringInterpolation {}
57+
#endif
58+
3159
extension EnumCaseParameterSyntax: SyntaxExpressibleByStringInterpolation {}
3260

61+
#if compiler(>=6)
62+
extension EnumCaseParameterSyntax: @retroactive ExpressibleByStringInterpolation {}
63+
#endif
64+
3365
extension ExprSyntax: SyntaxExpressibleByStringInterpolation {}
3466

67+
#if compiler(>=6)
68+
extension ExprSyntax: @retroactive ExpressibleByStringInterpolation {}
69+
#endif
70+
3571
extension FunctionParameterSyntax: SyntaxExpressibleByStringInterpolation {}
3672

73+
#if compiler(>=6)
74+
extension FunctionParameterSyntax: @retroactive ExpressibleByStringInterpolation {}
75+
#endif
76+
3777
extension GenericParameterClauseSyntax: SyntaxExpressibleByStringInterpolation {}
3878

79+
#if compiler(>=6)
80+
extension GenericParameterClauseSyntax: @retroactive ExpressibleByStringInterpolation {}
81+
#endif
82+
3983
extension MemberBlockSyntax: SyntaxExpressibleByStringInterpolation {}
4084

85+
#if compiler(>=6)
86+
extension MemberBlockSyntax: @retroactive ExpressibleByStringInterpolation {}
87+
#endif
88+
4189
extension PatternSyntax: SyntaxExpressibleByStringInterpolation {}
4290

91+
#if compiler(>=6)
92+
extension PatternSyntax: @retroactive ExpressibleByStringInterpolation {}
93+
#endif
94+
4395
extension SourceFileSyntax: SyntaxExpressibleByStringInterpolation {}
4496

97+
#if compiler(>=6)
98+
extension SourceFileSyntax: @retroactive ExpressibleByStringInterpolation {}
99+
#endif
100+
45101
extension StmtSyntax: SyntaxExpressibleByStringInterpolation {}
46102

103+
#if compiler(>=6)
104+
extension StmtSyntax: @retroactive ExpressibleByStringInterpolation {}
105+
#endif
106+
47107
extension SwitchCaseSyntax: SyntaxExpressibleByStringInterpolation {}
48108

109+
#if compiler(>=6)
110+
extension SwitchCaseSyntax: @retroactive ExpressibleByStringInterpolation {}
111+
#endif
112+
49113
extension TypeSyntax: SyntaxExpressibleByStringInterpolation {}
50114

115+
#if compiler(>=6)
116+
extension TypeSyntax: @retroactive ExpressibleByStringInterpolation {}
117+
#endif
118+
51119
extension AccessorDeclListSyntax: SyntaxExpressibleByStringInterpolation {}
52120

121+
#if compiler(>=6)
122+
extension AccessorDeclListSyntax: @retroactive ExpressibleByStringInterpolation {}
123+
#endif
124+
53125
extension AttributeListSyntax: SyntaxExpressibleByStringInterpolation {}
54126

127+
#if compiler(>=6)
128+
extension AttributeListSyntax: @retroactive ExpressibleByStringInterpolation {}
129+
#endif
130+
55131
extension CodeBlockItemListSyntax: SyntaxExpressibleByStringInterpolation {}
56132

133+
#if compiler(>=6)
134+
extension CodeBlockItemListSyntax: @retroactive ExpressibleByStringInterpolation {}
135+
#endif
136+
57137
extension MemberBlockItemListSyntax: SyntaxExpressibleByStringInterpolation {}
138+
139+
#if compiler(>=6)
140+
extension MemberBlockItemListSyntax: @retroactive ExpressibleByStringInterpolation {}
141+
#endif
142+

0 commit comments

Comments
 (0)