Skip to content

Commit 75684ee

Browse files
redsun82AlexDenisov
authored andcommitted
Swift: add 5.8 update QL test
1 parent 396b576 commit 75684ee

File tree

3 files changed

+301
-0
lines changed

3 files changed

+301
-0
lines changed
Lines changed: 256 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
v5.8.swift:
2+
# 1| [Comment] // https://github.com/apple/swift/blob/main/CHANGELOG.md#swift-58
3+
# 1|
4+
# 4| [StructDecl] Temperature
5+
# 5| getMember(0): [PatternBindingDecl] var ... = ...
6+
# 5| getPattern(0): [TypedPattern] ... as ...
7+
# 5| getSubPattern(): [NamedPattern] degreesCelsius
8+
# 5| getTypeRepr(): [TypeRepr] Double
9+
# 5| getMember(1): [ConcreteVarDecl] degreesCelsius
10+
# 5| Type = Double
11+
# 5| getAccessorDecl(0): [AccessorDecl] get
12+
# 5| InterfaceType = (Temperature) -> () -> Double
13+
# 5| getSelfParam(): [ParamDecl] self
14+
# 5| Type = Temperature
15+
# 5| getBody(): [BraceStmt] { ... }
16+
#-----| getElement(0): [ReturnStmt] return ...
17+
#-----| getResult(): [MemberRefExpr] .degreesCelsius
18+
#-----| getBase(): [DeclRefExpr] self
19+
# 5| getAccessorDecl(1): [AccessorDecl] set
20+
# 5| InterfaceType = (inout Temperature) -> (Double) -> ()
21+
# 5| getSelfParam(): [ParamDecl] self
22+
# 5| Type = Temperature
23+
# 5| getParam(0): [ParamDecl] value
24+
# 5| Type = Double
25+
# 5| getBody(): [BraceStmt] { ... }
26+
#-----| getElement(0): [AssignExpr] ... = ...
27+
#-----| getDest(): [MemberRefExpr] .degreesCelsius
28+
#-----| getBase(): [DeclRefExpr] self
29+
#-----| getSource(): [DeclRefExpr] value
30+
# 5| getAccessorDecl(2): [AccessorDecl] _modify
31+
# 5| InterfaceType = (inout Temperature) -> () -> ()
32+
# 5| getSelfParam(): [ParamDecl] self
33+
# 5| Type = Temperature
34+
# 5| getBody(): [BraceStmt] { ... }
35+
# 5| getElement(0): [YieldStmt] yield ...
36+
#-----| getResult(0): [InOutExpr] &...
37+
#-----| getSubExpr(): [MemberRefExpr] .degreesCelsius
38+
#-----| getBase(): [DeclRefExpr] self
39+
# 4| getMember(2): [ConstructorDecl] Temperature.init(degreesCelsius:)
40+
# 4| InterfaceType = (Temperature.Type) -> (Double) -> Temperature
41+
# 4| getSelfParam(): [ParamDecl] self
42+
# 4| Type = Temperature
43+
# 4| getParam(0): [ParamDecl] degreesCelsius
44+
# 4| Type = Double
45+
# 7| [Comment] // ...
46+
# 7|
47+
# 10| [ExtensionDecl] extension of Temperature
48+
# 13| getMember(0): [PatternBindingDecl] var ... = ...
49+
# 13| getPattern(0): [TypedPattern] ... as ...
50+
# 13| getSubPattern(): [NamedPattern] degreesFahrenheit
51+
# 13| getTypeRepr(): [TypeRepr] Double
52+
# 13| getMember(1): [ConcreteVarDecl] degreesFahrenheit
53+
# 13| Type = Double
54+
# 13| getAccessorDecl(0): [AccessorDecl] get
55+
# 13| InterfaceType = (Temperature) -> () -> Double
56+
# 13| getSelfParam(): [ParamDecl] self
57+
# 13| Type = Temperature
58+
# 13| getBody(): [BraceStmt] { ... }
59+
# 14| getElement(0): [ReturnStmt] return ...
60+
# 14| getResult(): [BinaryExpr] ... .+(_:_:) ...
61+
# 14| getFunction(): [MethodLookupExpr] .+(_:_:)
62+
# 14| getBase(): [TypeExpr] Double.Type
63+
# 14| getTypeRepr(): [TypeRepr] Double
64+
# 14| getMethodRef(): [DeclRefExpr] +(_:_:)
65+
# 14| getArgument(0): [Argument] : ... ./(_:_:) ...
66+
# 14| getExpr(): [BinaryExpr] ... ./(_:_:) ...
67+
# 14| getFunction(): [MethodLookupExpr] ./(_:_:)
68+
# 14| getBase(): [TypeExpr] Double.Type
69+
# 14| getTypeRepr(): [TypeRepr] Double
70+
# 14| getMethodRef(): [DeclRefExpr] /(_:_:)
71+
# 14| getArgument(0): [Argument] : ... .*(_:_:) ...
72+
# 14| getExpr(): [BinaryExpr] ... .*(_:_:) ...
73+
# 14| getFunction(): [MethodLookupExpr] .*(_:_:)
74+
# 14| getBase(): [TypeExpr] Double.Type
75+
# 14| getTypeRepr(): [TypeRepr] Double
76+
# 14| getMethodRef(): [DeclRefExpr] *(_:_:)
77+
# 14| getArgument(0): [Argument] : .degreesCelsius
78+
# 14| getExpr(): [MemberRefExpr] .degreesCelsius
79+
# 14| getBase(): [DeclRefExpr] self
80+
# 14| getArgument(1): [Argument] : 9
81+
# 14| getExpr(): [IntegerLiteralExpr] 9
82+
# 14| getArgument(1): [Argument] : 5
83+
# 14| getExpr(): [IntegerLiteralExpr] 5
84+
# 14| getExpr().getFullyConverted(): [ParenExpr] (...)
85+
# 14| getArgument(1): [Argument] : 32
86+
# 14| getExpr(): [IntegerLiteralExpr] 32
87+
# 18| [ConcreteFuncDecl] collectionDowncast(_:)
88+
# 18| InterfaceType = ([Any]) -> ()
89+
# 18| getParam(0): [ParamDecl] arr
90+
# 18| Type = [Any]
91+
# 18| getBody(): [BraceStmt] { ... }
92+
# 19| getElement(0): [SwitchStmt] switch arr { ... }
93+
# 19| getExpr(): [DeclRefExpr] arr
94+
# 20| getCase(0): [CaseStmt] case ...
95+
# 21| getBody(): [BraceStmt] { ... }
96+
# 21| getElement(0): [IntegerLiteralExpr] 0
97+
# 20| getLabel(0): [CaseLabelItem] ... is ...
98+
# 20| getPattern(): [IsPattern] ... is ...
99+
# 20| getCastTypeRepr(): [TypeRepr] [Int]
100+
# 20| getSubPattern(): [NamedPattern] ints
101+
# 20| getPattern().getFullyUnresolved(): [BindingPattern] let ...
102+
# 22| getCase(1): [CaseStmt] case ...
103+
# 23| getBody(): [BraceStmt] { ... }
104+
# 23| getElement(0): [IntegerLiteralExpr] 1
105+
# 22| getLabel(0): [CaseLabelItem] ... is ...
106+
# 22| getPattern(): [IsPattern] ... is ...
107+
# 22| getCastTypeRepr(): [TypeRepr] [Bool]
108+
# 24| getCase(2): [CaseStmt] case ...
109+
# 25| getBody(): [BraceStmt] { ... }
110+
# 25| getElement(0): [IntegerLiteralExpr] 2
111+
# 24| getLabel(0): [CaseLabelItem] _
112+
# 24| getPattern(): [AnyPattern] _
113+
# 20| [ConcreteVarDecl] ints
114+
# 20| Type = [Int]
115+
# 29| [StructDecl] Button
116+
# 30| getMember(0): [PatternBindingDecl] var ... = ...
117+
#-----| getInit(0): [NilLiteralExpr] nil
118+
# 30| getPattern(0): [TypedPattern] ... as ...
119+
# 30| getSubPattern(): [NamedPattern] tapHandler
120+
# 30| getTypeRepr(): [TypeRepr] (() -> ())?
121+
# 30| getMember(1): [ConcreteVarDecl] tapHandler
122+
# 30| Type = (() -> ())?
123+
# 30| getAccessorDecl(0): [AccessorDecl] get
124+
# 30| InterfaceType = (Button) -> () -> (() -> ())?
125+
# 30| getSelfParam(): [ParamDecl] self
126+
# 30| Type = Button
127+
# 30| getBody(): [BraceStmt] { ... }
128+
#-----| getElement(0): [ReturnStmt] return ...
129+
#-----| getResult(): [MemberRefExpr] .tapHandler
130+
#-----| getBase(): [DeclRefExpr] self
131+
# 30| getAccessorDecl(1): [AccessorDecl] set
132+
# 30| InterfaceType = (inout Button) -> ((() -> ())?) -> ()
133+
# 30| getSelfParam(): [ParamDecl] self
134+
# 30| Type = Button
135+
# 30| getParam(0): [ParamDecl] value
136+
# 30| Type = (() -> ())?
137+
# 30| getBody(): [BraceStmt] { ... }
138+
#-----| getElement(0): [AssignExpr] ... = ...
139+
#-----| getDest(): [MemberRefExpr] .tapHandler
140+
#-----| getBase(): [DeclRefExpr] self
141+
#-----| getSource(): [DeclRefExpr] value
142+
# 30| getAccessorDecl(2): [AccessorDecl] _modify
143+
# 30| InterfaceType = (inout Button) -> () -> ()
144+
# 30| getSelfParam(): [ParamDecl] self
145+
# 30| Type = Button
146+
# 30| getBody(): [BraceStmt] { ... }
147+
# 30| getElement(0): [YieldStmt] yield ...
148+
#-----| getResult(0): [InOutExpr] &...
149+
#-----| getSubExpr(): [MemberRefExpr] .tapHandler
150+
#-----| getBase(): [DeclRefExpr] self
151+
# 29| getMember(2): [ConstructorDecl] Button.init()
152+
# 29| InterfaceType = (Button.Type) -> () -> Button
153+
# 29| getSelfParam(): [ParamDecl] self
154+
# 29| Type = Button
155+
# 29| getBody(): [BraceStmt] { ... }
156+
# 29| getElement(0): [ReturnStmt] return
157+
# 29| getMember(3): [ConstructorDecl] Button.init(tapHandler:)
158+
# 29| InterfaceType = (Button.Type) -> ((() -> ())?) -> Button
159+
# 29| getSelfParam(): [ParamDecl] self
160+
# 29| Type = Button
161+
# 29| getParam(0): [ParamDecl] tapHandler
162+
# 29| Type = (() -> ())?
163+
# 33| [ClassDecl] ViewController
164+
# 34| getMember(0): [PatternBindingDecl] var ... = ...
165+
# 34| getInit(0): [CallExpr] call to Button.init()
166+
# 34| getFunction(): [MethodLookupExpr] Button.init()
167+
# 34| getBase(): [TypeExpr] Button.Type
168+
# 34| getTypeRepr(): [TypeRepr] Button
169+
# 34| getMethodRef(): [DeclRefExpr] Button.init()
170+
# 34| getPattern(0): [TypedPattern] ... as ...
171+
# 34| getSubPattern(): [NamedPattern] button
172+
# 34| getTypeRepr(): [TypeRepr] Button
173+
# 34| getMember(1): [ConcreteVarDecl] button
174+
# 34| Type = Button
175+
# 34| getAccessorDecl(0): [AccessorDecl] get
176+
# 34| InterfaceType = (ViewController) -> () -> Button
177+
# 34| getSelfParam(): [ParamDecl] self
178+
# 34| Type = ViewController
179+
# 34| getBody(): [BraceStmt] { ... }
180+
#-----| getElement(0): [ReturnStmt] return ...
181+
#-----| getResult(): [MemberRefExpr] .button
182+
#-----| getBase(): [DeclRefExpr] self
183+
# 34| getAccessorDecl(1): [AccessorDecl] set
184+
# 34| InterfaceType = (ViewController) -> (Button) -> ()
185+
# 34| getSelfParam(): [ParamDecl] self
186+
# 34| Type = ViewController
187+
# 34| getParam(0): [ParamDecl] value
188+
# 34| Type = Button
189+
# 34| getBody(): [BraceStmt] { ... }
190+
#-----| getElement(0): [AssignExpr] ... = ...
191+
#-----| getDest(): [MemberRefExpr] .button
192+
#-----| getBase(): [DeclRefExpr] self
193+
#-----| getSource(): [DeclRefExpr] value
194+
# 34| getAccessorDecl(2): [AccessorDecl] _modify
195+
# 34| InterfaceType = (ViewController) -> () -> ()
196+
# 34| getSelfParam(): [ParamDecl] self
197+
# 34| Type = ViewController
198+
# 34| getBody(): [BraceStmt] { ... }
199+
# 34| getElement(0): [YieldStmt] yield ...
200+
#-----| getResult(0): [InOutExpr] &...
201+
#-----| getSubExpr(): [MemberRefExpr] .button
202+
#-----| getBase(): [DeclRefExpr] self
203+
# 36| getMember(2): [ConcreteFuncDecl] setup()
204+
# 36| InterfaceType = (ViewController) -> () -> ()
205+
# 36| getSelfParam(): [ParamDecl] self
206+
# 36| Type = ViewController
207+
# 36| getBody(): [BraceStmt] { ... }
208+
# 37| getElement(0): [AssignExpr] ... = ...
209+
# 37| getDest(): [MemberRefExpr] .tapHandler
210+
# 37| getBase(): [MemberRefExpr] .button
211+
# 37| getBase(): [DeclRefExpr] self
212+
# 37| getSource(): [CaptureListExpr] { ... }
213+
# 37| getBindingDecl(0): [PatternBindingDecl] var ... = ...
214+
# 37| getInit(0): [DeclRefExpr] self
215+
# 37| getInit(0).getFullyConverted(): [InjectIntoOptionalExpr] (ViewController?) ...
216+
# 37| getPattern(0): [NamedPattern] self
217+
# 37| getClosureBody(): [ClosureExpr] { ... }
218+
# 37| getBody(): [BraceStmt] { ... }
219+
# 38| getElement(0): [GuardStmt] guard ... else { ... }
220+
# 38| getCondition(): [StmtCondition] StmtCondition
221+
# 38| getElement(0): [ConditionElement] let ...? = ...
222+
# 38| getPattern(): [OptionalSomePattern] let ...?
223+
# 38| getSubPattern(): [NamedPattern] self
224+
# 38| getSubPattern().getFullyUnresolved(): [BindingPattern] let ...
225+
# 38| getInitializer(): [DeclRefExpr] self
226+
# 38| getInitializer().getFullyConverted(): [LoadExpr] (ViewController?) ...
227+
# 38| getBody(): [BraceStmt] { ... }
228+
# 38| getElement(0): [ReturnStmt] return
229+
# 39| getElement(1): [CallExpr] call to dismiss()
230+
# 39| getFunction(): [MethodLookupExpr] .dismiss()
231+
# 39| getBase(): [DeclRefExpr] self
232+
# 39| getMethodRef(): [DeclRefExpr] dismiss()
233+
# 38| getCapture(0): [CapturedDecl] self
234+
# 37| getSource().getFullyConverted(): [InjectIntoOptionalExpr] ((() -> ())?) ...
235+
# 43| getMember(3): [ConcreteFuncDecl] dismiss()
236+
# 43| InterfaceType = (ViewController) -> () -> ()
237+
# 43| getSelfParam(): [ParamDecl] self
238+
# 43| Type = ViewController
239+
# 43| getBody(): [BraceStmt] { ... }
240+
# 33| getMember(4): [DestructorDecl] ViewController.deinit()
241+
# 33| InterfaceType = (ViewController) -> () -> ()
242+
# 33| getSelfParam(): [ParamDecl] self
243+
# 33| Type = ViewController
244+
# 33| getBody(): [BraceStmt] { ... }
245+
# 33| getMember(5): [ConstructorDecl] ViewController.init()
246+
# 33| InterfaceType = (ViewController.Type) -> () -> ViewController
247+
# 33| getSelfParam(): [ParamDecl] self
248+
# 33| Type = ViewController
249+
# 33| getBody(): [BraceStmt] { ... }
250+
# 33| getElement(0): [ReturnStmt] return
251+
# 37| [ConcreteVarDecl] self
252+
# 37| Type = ViewController?
253+
# 38| [ConcreteVarDecl] self
254+
# 38| Type = ViewController
255+
# 39| [Comment] // refers to `self.dismiss()`
256+
# 39|
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
library-tests/ast/PrintAst.ql
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// https://github.com/apple/swift/blob/main/CHANGELOG.md#swift-58
2+
3+
@available(macOS 12, *)
4+
public struct Temperature {
5+
public var degreesCelsius: Double
6+
7+
// ...
8+
}
9+
10+
extension Temperature {
11+
@available(macOS 12, *)
12+
@backDeployed(before: macOS 13)
13+
public var degreesFahrenheit: Double {
14+
return (degreesCelsius * 9 / 5) + 32
15+
}
16+
}
17+
18+
func collectionDowncast(_ arr: [Any]) {
19+
switch arr {
20+
case let ints as [Int]:
21+
0
22+
case is [Bool]:
23+
1
24+
case _:
25+
2
26+
}
27+
}
28+
29+
struct Button {
30+
var tapHandler: (() -> ())?
31+
}
32+
33+
class ViewController {
34+
var button: Button = Button()
35+
36+
func setup() {
37+
button.tapHandler = { [weak self] in
38+
guard let self else { return }
39+
dismiss() // refers to `self.dismiss()`
40+
}
41+
}
42+
43+
func dismiss() {}
44+
}

0 commit comments

Comments
 (0)