@@ -32,7 +32,19 @@ source_file
3232top_level
3333 body:
3434 block
35- stmt: unsupported_node "func greet() {\n print(\"hello\")\n}"
35+ stmt:
36+ function_declaration
37+ body:
38+ block
39+ stmt:
40+ call_expr
41+ argument:
42+ argument
43+ value: string_literal "\"hello\""
44+ callee:
45+ name_expr
46+ identifier: identifier "print"
47+ name: identifier "greet"
3648
3749===
3850Function with parameters and return type
@@ -96,7 +108,34 @@ source_file
96108top_level
97109 body:
98110 block
99- stmt: unsupported_node "func add(_ a: Int, _ b: Int) -> Int {\n return a + b\n}"
111+ stmt:
112+ function_declaration
113+ body:
114+ block
115+ stmt:
116+ return_expr
117+ value:
118+ binary_expr
119+ operator: infix_operator "+"
120+ left:
121+ name_expr
122+ identifier: identifier "a"
123+ right:
124+ name_expr
125+ identifier: identifier "b"
126+ name: identifier "add"
127+ parameter:
128+ parameter
129+ external_name: identifier "_"
130+ pattern:
131+ name_pattern
132+ identifier: identifier "a"
133+ parameter
134+ external_name: identifier "_"
135+ pattern:
136+ name_pattern
137+ identifier: identifier "b"
138+ return_type: unsupported_node "Int"
100139
101140===
102141Function with named parameters
@@ -143,7 +182,27 @@ source_file
143182top_level
144183 body:
145184 block
146- stmt: unsupported_node "func greet(person name: String) {\n print(name)\n}"
185+ stmt:
186+ function_declaration
187+ body:
188+ block
189+ stmt:
190+ call_expr
191+ argument:
192+ argument
193+ value:
194+ name_expr
195+ identifier: identifier "name"
196+ callee:
197+ name_expr
198+ identifier: identifier "print"
199+ name: identifier "greet"
200+ parameter:
201+ parameter
202+ external_name: identifier "person"
203+ pattern:
204+ name_pattern
205+ identifier: identifier "name"
147206
148207===
149208Function with default parameter value
@@ -192,7 +251,27 @@ source_file
192251top_level
193252 body:
194253 block
195- stmt: unsupported_node "func greet(name: String = \"world\") {\n print(name)\n}"
254+ stmt:
255+ function_declaration
256+ body:
257+ block
258+ stmt:
259+ call_expr
260+ argument:
261+ argument
262+ value:
263+ name_expr
264+ identifier: identifier "name"
265+ callee:
266+ name_expr
267+ identifier: identifier "print"
268+ name: identifier "greet"
269+ parameter:
270+ parameter
271+ default: string_literal "\"world\""
272+ pattern:
273+ name_pattern
274+ identifier: identifier "name"
196275
197276===
198277Variadic function
@@ -258,7 +337,35 @@ source_file
258337top_level
259338 body:
260339 block
261- stmt: unsupported_node "func sum(_ values: Int...) -> Int {\n return values.reduce(0, +)\n}"
340+ stmt:
341+ function_declaration
342+ body:
343+ block
344+ stmt:
345+ return_expr
346+ value:
347+ call_expr
348+ argument:
349+ argument
350+ value: int_literal "0"
351+ argument
352+ value:
353+ name_expr
354+ identifier: identifier "+"
355+ callee:
356+ member_access_expr
357+ base:
358+ name_expr
359+ identifier: identifier "values"
360+ member: identifier "reduce"
361+ name: identifier "sum"
362+ parameter:
363+ parameter
364+ external_name: identifier "_"
365+ pattern:
366+ name_pattern
367+ identifier: identifier "values"
368+ return_type: unsupported_node "Int"
262369
263370===
264371Function call
@@ -287,7 +394,16 @@ source_file
287394top_level
288395 body:
289396 block
290- stmt: unsupported_node "foo(1, 2)"
397+ stmt:
398+ call_expr
399+ argument:
400+ argument
401+ value: int_literal "1"
402+ argument
403+ value: int_literal "2"
404+ callee:
405+ name_expr
406+ identifier: identifier "foo"
291407
292408===
293409Function call with labelled arguments
@@ -319,7 +435,15 @@ source_file
319435top_level
320436 body:
321437 block
322- stmt: unsupported_node "greet(person: \"Bob\")"
438+ stmt:
439+ call_expr
440+ argument:
441+ argument
442+ name: identifier "person"
443+ value: string_literal "\"Bob\""
444+ callee:
445+ name_expr
446+ identifier: identifier "greet"
323447
324448===
325449Method call
@@ -351,7 +475,17 @@ source_file
351475top_level
352476 body:
353477 block
354- stmt: unsupported_node "list.append(1)"
478+ stmt:
479+ call_expr
480+ argument:
481+ argument
482+ value: int_literal "1"
483+ callee:
484+ member_access_expr
485+ base:
486+ name_expr
487+ identifier: identifier "list"
488+ member: identifier "append"
355489
356490===
357491Generic function
@@ -404,4 +538,20 @@ source_file
404538top_level
405539 body:
406540 block
407- stmt: unsupported_node "func identity<T>(_ x: T) -> T {\n return x\n}"
541+ stmt:
542+ function_declaration
543+ body:
544+ block
545+ stmt:
546+ return_expr
547+ value:
548+ name_expr
549+ identifier: identifier "x"
550+ name: identifier "identity"
551+ parameter:
552+ parameter
553+ external_name: identifier "_"
554+ pattern:
555+ name_pattern
556+ identifier: identifier "x"
557+ return_type: unsupported_node "T"
0 commit comments