openrewrite-remote 0.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,894 @@
1
+ from __future__ import annotations
2
+
3
+ from operator import attrgetter
4
+ from typing import Optional, TypeVar, cast
5
+
6
+ from rewrite import Tree, TreeVisitor, Markers, Marker, Cursor
7
+ from rewrite.remote import Sender, SenderContext
8
+ from rewrite.python import *
9
+ from rewrite.java import *
10
+ from rewrite.python.support_types import *
11
+ from . import extensions
12
+
13
+ class PythonSender(Sender):
14
+ def send(self, after: T, before: Optional[T], ctx: SenderContext) -> None:
15
+ visitor = self.Visitor()
16
+ visitor.visit(after, ctx.fork(visitor, before))
17
+
18
+ class Visitor(PythonVisitor[SenderContext]):
19
+ def visit(self, tree: Optional[Tree], ctx: SenderContext, parent: Optional[Cursor] = None) -> Py:
20
+ if parent is not None:
21
+ self.cursor = parent
22
+
23
+ self.cursor = Cursor(self.cursor, tree)
24
+ ctx.send_node(tree, lambda x: x, ctx.send_tree)
25
+ self.cursor = self.cursor.parent
26
+
27
+ return cast(Py, tree)
28
+
29
+ def visit_python_binary(self, binary: Binary, ctx: SenderContext) -> J:
30
+ ctx.send_value(binary, attrgetter('_id'))
31
+ ctx.send_node(binary, attrgetter('_prefix'), PythonSender.send_space)
32
+ ctx.send_node(binary, attrgetter('_markers'), ctx.send_markers)
33
+ ctx.send_node(binary, attrgetter('_left'), ctx.send_tree)
34
+ ctx.send_node(binary, attrgetter('_operator'), PythonSender.send_left_padded)
35
+ ctx.send_node(binary, attrgetter('_right'), ctx.send_tree)
36
+ ctx.send_typed_value(binary, attrgetter('_type'))
37
+ return binary
38
+
39
+ def visit_exception_type(self, exception_type: ExceptionType, ctx: SenderContext) -> J:
40
+ ctx.send_value(exception_type, attrgetter('_id'))
41
+ ctx.send_node(exception_type, attrgetter('_prefix'), PythonSender.send_space)
42
+ ctx.send_node(exception_type, attrgetter('_markers'), ctx.send_markers)
43
+ ctx.send_typed_value(exception_type, attrgetter('_type'))
44
+ ctx.send_value(exception_type, attrgetter('_exception_group'))
45
+ ctx.send_node(exception_type, attrgetter('_expression'), ctx.send_tree)
46
+ return exception_type
47
+
48
+ def visit_type_hint(self, type_hint: TypeHint, ctx: SenderContext) -> J:
49
+ ctx.send_value(type_hint, attrgetter('_id'))
50
+ ctx.send_node(type_hint, attrgetter('_prefix'), PythonSender.send_space)
51
+ ctx.send_node(type_hint, attrgetter('_markers'), ctx.send_markers)
52
+ ctx.send_value(type_hint, attrgetter('_kind'))
53
+ ctx.send_node(type_hint, attrgetter('_expression'), ctx.send_tree)
54
+ ctx.send_typed_value(type_hint, attrgetter('_type'))
55
+ return type_hint
56
+
57
+ def visit_compilation_unit(self, compilation_unit: CompilationUnit, ctx: SenderContext) -> J:
58
+ ctx.send_value(compilation_unit, attrgetter('_id'))
59
+ ctx.send_node(compilation_unit, attrgetter('_prefix'), PythonSender.send_space)
60
+ ctx.send_node(compilation_unit, attrgetter('_markers'), ctx.send_markers)
61
+ ctx.send_value(compilation_unit, attrgetter('_source_path'))
62
+ ctx.send_typed_value(compilation_unit, attrgetter('_file_attributes'))
63
+ ctx.send_value(compilation_unit, attrgetter('_charset_name'))
64
+ ctx.send_value(compilation_unit, attrgetter('_charset_bom_marked'))
65
+ ctx.send_typed_value(compilation_unit, attrgetter('_checksum'))
66
+ ctx.send_nodes(compilation_unit, attrgetter('_imports'), PythonSender.send_right_padded, lambda t: t.element.id)
67
+ ctx.send_nodes(compilation_unit, attrgetter('_statements'), PythonSender.send_right_padded, lambda t: t.element.id)
68
+ ctx.send_node(compilation_unit, attrgetter('_eof'), PythonSender.send_space)
69
+ return compilation_unit
70
+
71
+ def visit_expression_statement(self, expression_statement: ExpressionStatement, ctx: SenderContext) -> J:
72
+ ctx.send_value(expression_statement, attrgetter('_id'))
73
+ ctx.send_node(expression_statement, attrgetter('_expression'), ctx.send_tree)
74
+ return expression_statement
75
+
76
+ def visit_statement_expression(self, statement_expression: StatementExpression, ctx: SenderContext) -> J:
77
+ ctx.send_value(statement_expression, attrgetter('_id'))
78
+ ctx.send_node(statement_expression, attrgetter('_statement'), ctx.send_tree)
79
+ return statement_expression
80
+
81
+ def visit_multi_import(self, multi_import: MultiImport, ctx: SenderContext) -> J:
82
+ ctx.send_value(multi_import, attrgetter('_id'))
83
+ ctx.send_node(multi_import, attrgetter('_prefix'), PythonSender.send_space)
84
+ ctx.send_node(multi_import, attrgetter('_markers'), ctx.send_markers)
85
+ ctx.send_node(multi_import, attrgetter('_from'), PythonSender.send_right_padded)
86
+ ctx.send_value(multi_import, attrgetter('_parenthesized'))
87
+ ctx.send_node(multi_import, attrgetter('_names'), PythonSender.send_container)
88
+ return multi_import
89
+
90
+ def visit_key_value(self, key_value: KeyValue, ctx: SenderContext) -> J:
91
+ ctx.send_value(key_value, attrgetter('_id'))
92
+ ctx.send_node(key_value, attrgetter('_prefix'), PythonSender.send_space)
93
+ ctx.send_node(key_value, attrgetter('_markers'), ctx.send_markers)
94
+ ctx.send_node(key_value, attrgetter('_key'), PythonSender.send_right_padded)
95
+ ctx.send_node(key_value, attrgetter('_value'), ctx.send_tree)
96
+ ctx.send_typed_value(key_value, attrgetter('_type'))
97
+ return key_value
98
+
99
+ def visit_dict_literal(self, dict_literal: DictLiteral, ctx: SenderContext) -> J:
100
+ ctx.send_value(dict_literal, attrgetter('_id'))
101
+ ctx.send_node(dict_literal, attrgetter('_prefix'), PythonSender.send_space)
102
+ ctx.send_node(dict_literal, attrgetter('_markers'), ctx.send_markers)
103
+ ctx.send_node(dict_literal, attrgetter('_elements'), PythonSender.send_container)
104
+ ctx.send_typed_value(dict_literal, attrgetter('_type'))
105
+ return dict_literal
106
+
107
+ def visit_collection_literal(self, collection_literal: CollectionLiteral, ctx: SenderContext) -> J:
108
+ ctx.send_value(collection_literal, attrgetter('_id'))
109
+ ctx.send_node(collection_literal, attrgetter('_prefix'), PythonSender.send_space)
110
+ ctx.send_node(collection_literal, attrgetter('_markers'), ctx.send_markers)
111
+ ctx.send_value(collection_literal, attrgetter('_kind'))
112
+ ctx.send_node(collection_literal, attrgetter('_elements'), PythonSender.send_container)
113
+ ctx.send_typed_value(collection_literal, attrgetter('_type'))
114
+ return collection_literal
115
+
116
+ def visit_formatted_string(self, formatted_string: FormattedString, ctx: SenderContext) -> J:
117
+ ctx.send_value(formatted_string, attrgetter('_id'))
118
+ ctx.send_node(formatted_string, attrgetter('_prefix'), PythonSender.send_space)
119
+ ctx.send_node(formatted_string, attrgetter('_markers'), ctx.send_markers)
120
+ ctx.send_value(formatted_string, attrgetter('_delimiter'))
121
+ ctx.send_nodes(formatted_string, attrgetter('_parts'), ctx.send_tree, attrgetter('id'))
122
+ return formatted_string
123
+
124
+ def visit_formatted_string_value(self, value: FormattedString.Value, ctx: SenderContext) -> J:
125
+ ctx.send_value(value, attrgetter('_id'))
126
+ ctx.send_node(value, attrgetter('_prefix'), PythonSender.send_space)
127
+ ctx.send_node(value, attrgetter('_markers'), ctx.send_markers)
128
+ ctx.send_node(value, attrgetter('_expression'), PythonSender.send_right_padded)
129
+ ctx.send_node(value, attrgetter('_debug'), PythonSender.send_right_padded)
130
+ ctx.send_value(value, attrgetter('_conversion'))
131
+ ctx.send_node(value, attrgetter('_format'), ctx.send_tree)
132
+ return value
133
+
134
+ def visit_pass(self, pass_: Pass, ctx: SenderContext) -> J:
135
+ ctx.send_value(pass_, attrgetter('_id'))
136
+ ctx.send_node(pass_, attrgetter('_prefix'), PythonSender.send_space)
137
+ ctx.send_node(pass_, attrgetter('_markers'), ctx.send_markers)
138
+ return pass_
139
+
140
+ def visit_trailing_else_wrapper(self, trailing_else_wrapper: TrailingElseWrapper, ctx: SenderContext) -> J:
141
+ ctx.send_value(trailing_else_wrapper, attrgetter('_id'))
142
+ ctx.send_node(trailing_else_wrapper, attrgetter('_prefix'), PythonSender.send_space)
143
+ ctx.send_node(trailing_else_wrapper, attrgetter('_markers'), ctx.send_markers)
144
+ ctx.send_node(trailing_else_wrapper, attrgetter('_statement'), ctx.send_tree)
145
+ ctx.send_node(trailing_else_wrapper, attrgetter('_else_block'), PythonSender.send_left_padded)
146
+ return trailing_else_wrapper
147
+
148
+ def visit_comprehension_expression(self, comprehension_expression: ComprehensionExpression, ctx: SenderContext) -> J:
149
+ ctx.send_value(comprehension_expression, attrgetter('_id'))
150
+ ctx.send_node(comprehension_expression, attrgetter('_prefix'), PythonSender.send_space)
151
+ ctx.send_node(comprehension_expression, attrgetter('_markers'), ctx.send_markers)
152
+ ctx.send_value(comprehension_expression, attrgetter('_kind'))
153
+ ctx.send_node(comprehension_expression, attrgetter('_result'), ctx.send_tree)
154
+ ctx.send_nodes(comprehension_expression, attrgetter('_clauses'), ctx.send_tree, attrgetter('id'))
155
+ ctx.send_node(comprehension_expression, attrgetter('_suffix'), PythonSender.send_space)
156
+ ctx.send_typed_value(comprehension_expression, attrgetter('_type'))
157
+ return comprehension_expression
158
+
159
+ def visit_comprehension_condition(self, condition: ComprehensionExpression.Condition, ctx: SenderContext) -> J:
160
+ ctx.send_value(condition, attrgetter('_id'))
161
+ ctx.send_node(condition, attrgetter('_prefix'), PythonSender.send_space)
162
+ ctx.send_node(condition, attrgetter('_markers'), ctx.send_markers)
163
+ ctx.send_node(condition, attrgetter('_expression'), ctx.send_tree)
164
+ return condition
165
+
166
+ def visit_comprehension_clause(self, clause: ComprehensionExpression.Clause, ctx: SenderContext) -> J:
167
+ ctx.send_value(clause, attrgetter('_id'))
168
+ ctx.send_node(clause, attrgetter('_prefix'), PythonSender.send_space)
169
+ ctx.send_node(clause, attrgetter('_markers'), ctx.send_markers)
170
+ ctx.send_node(clause, attrgetter('_iterator_variable'), ctx.send_tree)
171
+ ctx.send_node(clause, attrgetter('_iterated_list'), PythonSender.send_left_padded)
172
+ ctx.send_nodes(clause, attrgetter('_conditions'), ctx.send_tree, attrgetter('id'))
173
+ return clause
174
+
175
+ def visit_await(self, await_: Await, ctx: SenderContext) -> J:
176
+ ctx.send_value(await_, attrgetter('_id'))
177
+ ctx.send_node(await_, attrgetter('_prefix'), PythonSender.send_space)
178
+ ctx.send_node(await_, attrgetter('_markers'), ctx.send_markers)
179
+ ctx.send_node(await_, attrgetter('_expression'), ctx.send_tree)
180
+ ctx.send_typed_value(await_, attrgetter('_type'))
181
+ return await_
182
+
183
+ def visit_yield_from(self, yield_from: YieldFrom, ctx: SenderContext) -> J:
184
+ ctx.send_value(yield_from, attrgetter('_id'))
185
+ ctx.send_node(yield_from, attrgetter('_prefix'), PythonSender.send_space)
186
+ ctx.send_node(yield_from, attrgetter('_markers'), ctx.send_markers)
187
+ ctx.send_node(yield_from, attrgetter('_expression'), ctx.send_tree)
188
+ ctx.send_typed_value(yield_from, attrgetter('_type'))
189
+ return yield_from
190
+
191
+ def visit_variable_scope(self, variable_scope: VariableScope, ctx: SenderContext) -> J:
192
+ ctx.send_value(variable_scope, attrgetter('_id'))
193
+ ctx.send_node(variable_scope, attrgetter('_prefix'), PythonSender.send_space)
194
+ ctx.send_node(variable_scope, attrgetter('_markers'), ctx.send_markers)
195
+ ctx.send_value(variable_scope, attrgetter('_kind'))
196
+ ctx.send_nodes(variable_scope, attrgetter('_names'), PythonSender.send_right_padded, lambda t: t.element.id)
197
+ return variable_scope
198
+
199
+ def visit_del(self, del_: Del, ctx: SenderContext) -> J:
200
+ ctx.send_value(del_, attrgetter('_id'))
201
+ ctx.send_node(del_, attrgetter('_prefix'), PythonSender.send_space)
202
+ ctx.send_node(del_, attrgetter('_markers'), ctx.send_markers)
203
+ ctx.send_nodes(del_, attrgetter('_targets'), PythonSender.send_right_padded, lambda t: t.element.id)
204
+ return del_
205
+
206
+ def visit_special_parameter(self, special_parameter: SpecialParameter, ctx: SenderContext) -> J:
207
+ ctx.send_value(special_parameter, attrgetter('_id'))
208
+ ctx.send_node(special_parameter, attrgetter('_prefix'), PythonSender.send_space)
209
+ ctx.send_node(special_parameter, attrgetter('_markers'), ctx.send_markers)
210
+ ctx.send_value(special_parameter, attrgetter('_kind'))
211
+ ctx.send_node(special_parameter, attrgetter('_type_hint'), ctx.send_tree)
212
+ ctx.send_typed_value(special_parameter, attrgetter('_type'))
213
+ return special_parameter
214
+
215
+ def visit_star(self, star: Star, ctx: SenderContext) -> J:
216
+ ctx.send_value(star, attrgetter('_id'))
217
+ ctx.send_node(star, attrgetter('_prefix'), PythonSender.send_space)
218
+ ctx.send_node(star, attrgetter('_markers'), ctx.send_markers)
219
+ ctx.send_value(star, attrgetter('_kind'))
220
+ ctx.send_node(star, attrgetter('_expression'), ctx.send_tree)
221
+ ctx.send_typed_value(star, attrgetter('_type'))
222
+ return star
223
+
224
+ def visit_named_argument(self, named_argument: NamedArgument, ctx: SenderContext) -> J:
225
+ ctx.send_value(named_argument, attrgetter('_id'))
226
+ ctx.send_node(named_argument, attrgetter('_prefix'), PythonSender.send_space)
227
+ ctx.send_node(named_argument, attrgetter('_markers'), ctx.send_markers)
228
+ ctx.send_node(named_argument, attrgetter('_name'), ctx.send_tree)
229
+ ctx.send_node(named_argument, attrgetter('_value'), PythonSender.send_left_padded)
230
+ ctx.send_typed_value(named_argument, attrgetter('_type'))
231
+ return named_argument
232
+
233
+ def visit_type_hinted_expression(self, type_hinted_expression: TypeHintedExpression, ctx: SenderContext) -> J:
234
+ ctx.send_value(type_hinted_expression, attrgetter('_id'))
235
+ ctx.send_node(type_hinted_expression, attrgetter('_prefix'), PythonSender.send_space)
236
+ ctx.send_node(type_hinted_expression, attrgetter('_markers'), ctx.send_markers)
237
+ ctx.send_node(type_hinted_expression, attrgetter('_type_hint'), ctx.send_tree)
238
+ ctx.send_node(type_hinted_expression, attrgetter('_expression'), ctx.send_tree)
239
+ ctx.send_typed_value(type_hinted_expression, attrgetter('_type'))
240
+ return type_hinted_expression
241
+
242
+ def visit_error_from(self, error_from: ErrorFrom, ctx: SenderContext) -> J:
243
+ ctx.send_value(error_from, attrgetter('_id'))
244
+ ctx.send_node(error_from, attrgetter('_prefix'), PythonSender.send_space)
245
+ ctx.send_node(error_from, attrgetter('_markers'), ctx.send_markers)
246
+ ctx.send_node(error_from, attrgetter('_error'), ctx.send_tree)
247
+ ctx.send_node(error_from, attrgetter('_from'), PythonSender.send_left_padded)
248
+ ctx.send_typed_value(error_from, attrgetter('_type'))
249
+ return error_from
250
+
251
+ def visit_match_case(self, match_case: MatchCase, ctx: SenderContext) -> J:
252
+ ctx.send_value(match_case, attrgetter('_id'))
253
+ ctx.send_node(match_case, attrgetter('_prefix'), PythonSender.send_space)
254
+ ctx.send_node(match_case, attrgetter('_markers'), ctx.send_markers)
255
+ ctx.send_node(match_case, attrgetter('_pattern'), ctx.send_tree)
256
+ ctx.send_node(match_case, attrgetter('_guard'), PythonSender.send_left_padded)
257
+ ctx.send_typed_value(match_case, attrgetter('_type'))
258
+ return match_case
259
+
260
+ def visit_match_case_pattern(self, pattern: MatchCase.Pattern, ctx: SenderContext) -> J:
261
+ ctx.send_value(pattern, attrgetter('_id'))
262
+ ctx.send_node(pattern, attrgetter('_prefix'), PythonSender.send_space)
263
+ ctx.send_node(pattern, attrgetter('_markers'), ctx.send_markers)
264
+ ctx.send_value(pattern, attrgetter('_kind'))
265
+ ctx.send_node(pattern, attrgetter('_children'), PythonSender.send_container)
266
+ ctx.send_typed_value(pattern, attrgetter('_type'))
267
+ return pattern
268
+
269
+ def visit_slice(self, slice: Slice, ctx: SenderContext) -> J:
270
+ ctx.send_value(slice, attrgetter('_id'))
271
+ ctx.send_node(slice, attrgetter('_prefix'), PythonSender.send_space)
272
+ ctx.send_node(slice, attrgetter('_markers'), ctx.send_markers)
273
+ ctx.send_node(slice, attrgetter('_start'), PythonSender.send_right_padded)
274
+ ctx.send_node(slice, attrgetter('_stop'), PythonSender.send_right_padded)
275
+ ctx.send_node(slice, attrgetter('_step'), PythonSender.send_right_padded)
276
+ return slice
277
+
278
+ def visit_annotated_type(self, annotated_type: AnnotatedType, ctx: SenderContext) -> J:
279
+ ctx.send_value(annotated_type, attrgetter('_id'))
280
+ ctx.send_node(annotated_type, attrgetter('_prefix'), PythonSender.send_space)
281
+ ctx.send_node(annotated_type, attrgetter('_markers'), ctx.send_markers)
282
+ ctx.send_nodes(annotated_type, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
283
+ ctx.send_node(annotated_type, attrgetter('_type_expression'), ctx.send_tree)
284
+ return annotated_type
285
+
286
+ def visit_annotation(self, annotation: Annotation, ctx: SenderContext) -> J:
287
+ ctx.send_value(annotation, attrgetter('_id'))
288
+ ctx.send_node(annotation, attrgetter('_prefix'), PythonSender.send_space)
289
+ ctx.send_node(annotation, attrgetter('_markers'), ctx.send_markers)
290
+ ctx.send_node(annotation, attrgetter('_annotation_type'), ctx.send_tree)
291
+ ctx.send_node(annotation, attrgetter('_arguments'), PythonSender.send_container)
292
+ return annotation
293
+
294
+ def visit_array_access(self, array_access: ArrayAccess, ctx: SenderContext) -> J:
295
+ ctx.send_value(array_access, attrgetter('_id'))
296
+ ctx.send_node(array_access, attrgetter('_prefix'), PythonSender.send_space)
297
+ ctx.send_node(array_access, attrgetter('_markers'), ctx.send_markers)
298
+ ctx.send_node(array_access, attrgetter('_indexed'), ctx.send_tree)
299
+ ctx.send_node(array_access, attrgetter('_dimension'), ctx.send_tree)
300
+ ctx.send_typed_value(array_access, attrgetter('_type'))
301
+ return array_access
302
+
303
+ def visit_array_type(self, array_type: ArrayType, ctx: SenderContext) -> J:
304
+ ctx.send_value(array_type, attrgetter('_id'))
305
+ ctx.send_node(array_type, attrgetter('_prefix'), PythonSender.send_space)
306
+ ctx.send_node(array_type, attrgetter('_markers'), ctx.send_markers)
307
+ ctx.send_node(array_type, attrgetter('_element_type'), ctx.send_tree)
308
+ ctx.send_nodes(array_type, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
309
+ ctx.send_node(array_type, attrgetter('_dimension'), PythonSender.send_left_padded)
310
+ ctx.send_typed_value(array_type, attrgetter('_type'))
311
+ return array_type
312
+
313
+ def visit_assert(self, assert_: Assert, ctx: SenderContext) -> J:
314
+ ctx.send_value(assert_, attrgetter('_id'))
315
+ ctx.send_node(assert_, attrgetter('_prefix'), PythonSender.send_space)
316
+ ctx.send_node(assert_, attrgetter('_markers'), ctx.send_markers)
317
+ ctx.send_node(assert_, attrgetter('_condition'), ctx.send_tree)
318
+ ctx.send_node(assert_, attrgetter('_detail'), PythonSender.send_left_padded)
319
+ return assert_
320
+
321
+ def visit_assignment(self, assignment: Assignment, ctx: SenderContext) -> J:
322
+ ctx.send_value(assignment, attrgetter('_id'))
323
+ ctx.send_node(assignment, attrgetter('_prefix'), PythonSender.send_space)
324
+ ctx.send_node(assignment, attrgetter('_markers'), ctx.send_markers)
325
+ ctx.send_node(assignment, attrgetter('_variable'), ctx.send_tree)
326
+ ctx.send_node(assignment, attrgetter('_assignment'), PythonSender.send_left_padded)
327
+ ctx.send_typed_value(assignment, attrgetter('_type'))
328
+ return assignment
329
+
330
+ def visit_assignment_operation(self, assignment_operation: AssignmentOperation, ctx: SenderContext) -> J:
331
+ ctx.send_value(assignment_operation, attrgetter('_id'))
332
+ ctx.send_node(assignment_operation, attrgetter('_prefix'), PythonSender.send_space)
333
+ ctx.send_node(assignment_operation, attrgetter('_markers'), ctx.send_markers)
334
+ ctx.send_node(assignment_operation, attrgetter('_variable'), ctx.send_tree)
335
+ ctx.send_node(assignment_operation, attrgetter('_operator'), PythonSender.send_left_padded)
336
+ ctx.send_node(assignment_operation, attrgetter('_assignment'), ctx.send_tree)
337
+ ctx.send_typed_value(assignment_operation, attrgetter('_type'))
338
+ return assignment_operation
339
+
340
+ def visit_binary(self, binary: Binary, ctx: SenderContext) -> J:
341
+ ctx.send_value(binary, attrgetter('_id'))
342
+ ctx.send_node(binary, attrgetter('_prefix'), PythonSender.send_space)
343
+ ctx.send_node(binary, attrgetter('_markers'), ctx.send_markers)
344
+ ctx.send_node(binary, attrgetter('_left'), ctx.send_tree)
345
+ ctx.send_node(binary, attrgetter('_operator'), PythonSender.send_left_padded)
346
+ ctx.send_node(binary, attrgetter('_right'), ctx.send_tree)
347
+ ctx.send_typed_value(binary, attrgetter('_type'))
348
+ return binary
349
+
350
+ def visit_block(self, block: Block, ctx: SenderContext) -> J:
351
+ ctx.send_value(block, attrgetter('_id'))
352
+ ctx.send_node(block, attrgetter('_prefix'), PythonSender.send_space)
353
+ ctx.send_node(block, attrgetter('_markers'), ctx.send_markers)
354
+ ctx.send_node(block, attrgetter('_static'), PythonSender.send_right_padded)
355
+ ctx.send_nodes(block, attrgetter('_statements'), PythonSender.send_right_padded, lambda t: t.element.id)
356
+ ctx.send_node(block, attrgetter('_end'), PythonSender.send_space)
357
+ return block
358
+
359
+ def visit_break(self, break_: Break, ctx: SenderContext) -> J:
360
+ ctx.send_value(break_, attrgetter('_id'))
361
+ ctx.send_node(break_, attrgetter('_prefix'), PythonSender.send_space)
362
+ ctx.send_node(break_, attrgetter('_markers'), ctx.send_markers)
363
+ ctx.send_node(break_, attrgetter('_label'), ctx.send_tree)
364
+ return break_
365
+
366
+ def visit_case(self, case: Case, ctx: SenderContext) -> J:
367
+ ctx.send_value(case, attrgetter('_id'))
368
+ ctx.send_node(case, attrgetter('_prefix'), PythonSender.send_space)
369
+ ctx.send_node(case, attrgetter('_markers'), ctx.send_markers)
370
+ ctx.send_value(case, attrgetter('_type'))
371
+ ctx.send_node(case, attrgetter('_expressions'), PythonSender.send_container)
372
+ ctx.send_node(case, attrgetter('_statements'), PythonSender.send_container)
373
+ ctx.send_node(case, attrgetter('_body'), PythonSender.send_right_padded)
374
+ return case
375
+
376
+ def visit_class_declaration(self, class_declaration: ClassDeclaration, ctx: SenderContext) -> J:
377
+ ctx.send_value(class_declaration, attrgetter('_id'))
378
+ ctx.send_node(class_declaration, attrgetter('_prefix'), PythonSender.send_space)
379
+ ctx.send_node(class_declaration, attrgetter('_markers'), ctx.send_markers)
380
+ ctx.send_nodes(class_declaration, attrgetter('_leading_annotations'), ctx.send_tree, attrgetter('id'))
381
+ ctx.send_nodes(class_declaration, attrgetter('_modifiers'), ctx.send_tree, attrgetter('id'))
382
+ ctx.send_node(class_declaration, attrgetter('_kind'), ctx.send_tree)
383
+ ctx.send_node(class_declaration, attrgetter('_name'), ctx.send_tree)
384
+ ctx.send_node(class_declaration, attrgetter('_type_parameters'), PythonSender.send_container)
385
+ ctx.send_node(class_declaration, attrgetter('_primary_constructor'), PythonSender.send_container)
386
+ ctx.send_node(class_declaration, attrgetter('_extends'), PythonSender.send_left_padded)
387
+ ctx.send_node(class_declaration, attrgetter('_implements'), PythonSender.send_container)
388
+ ctx.send_node(class_declaration, attrgetter('_permits'), PythonSender.send_container)
389
+ ctx.send_node(class_declaration, attrgetter('_body'), ctx.send_tree)
390
+ ctx.send_typed_value(class_declaration, attrgetter('_type'))
391
+ return class_declaration
392
+
393
+ def visit_class_declaration_kind(self, kind: ClassDeclaration.Kind, ctx: SenderContext) -> J:
394
+ ctx.send_value(kind, attrgetter('_id'))
395
+ ctx.send_node(kind, attrgetter('_prefix'), PythonSender.send_space)
396
+ ctx.send_node(kind, attrgetter('_markers'), ctx.send_markers)
397
+ ctx.send_nodes(kind, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
398
+ ctx.send_value(kind, attrgetter('_type'))
399
+ return kind
400
+
401
+ def visit_continue(self, continue_: Continue, ctx: SenderContext) -> J:
402
+ ctx.send_value(continue_, attrgetter('_id'))
403
+ ctx.send_node(continue_, attrgetter('_prefix'), PythonSender.send_space)
404
+ ctx.send_node(continue_, attrgetter('_markers'), ctx.send_markers)
405
+ ctx.send_node(continue_, attrgetter('_label'), ctx.send_tree)
406
+ return continue_
407
+
408
+ def visit_do_while_loop(self, do_while_loop: DoWhileLoop, ctx: SenderContext) -> J:
409
+ ctx.send_value(do_while_loop, attrgetter('_id'))
410
+ ctx.send_node(do_while_loop, attrgetter('_prefix'), PythonSender.send_space)
411
+ ctx.send_node(do_while_loop, attrgetter('_markers'), ctx.send_markers)
412
+ ctx.send_node(do_while_loop, attrgetter('_body'), PythonSender.send_right_padded)
413
+ ctx.send_node(do_while_loop, attrgetter('_while_condition'), PythonSender.send_left_padded)
414
+ return do_while_loop
415
+
416
+ def visit_empty(self, empty: Empty, ctx: SenderContext) -> J:
417
+ ctx.send_value(empty, attrgetter('_id'))
418
+ ctx.send_node(empty, attrgetter('_prefix'), PythonSender.send_space)
419
+ ctx.send_node(empty, attrgetter('_markers'), ctx.send_markers)
420
+ return empty
421
+
422
+ def visit_enum_value(self, enum_value: EnumValue, ctx: SenderContext) -> J:
423
+ ctx.send_value(enum_value, attrgetter('_id'))
424
+ ctx.send_node(enum_value, attrgetter('_prefix'), PythonSender.send_space)
425
+ ctx.send_node(enum_value, attrgetter('_markers'), ctx.send_markers)
426
+ ctx.send_nodes(enum_value, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
427
+ ctx.send_node(enum_value, attrgetter('_name'), ctx.send_tree)
428
+ ctx.send_node(enum_value, attrgetter('_initializer'), ctx.send_tree)
429
+ return enum_value
430
+
431
+ def visit_enum_value_set(self, enum_value_set: EnumValueSet, ctx: SenderContext) -> J:
432
+ ctx.send_value(enum_value_set, attrgetter('_id'))
433
+ ctx.send_node(enum_value_set, attrgetter('_prefix'), PythonSender.send_space)
434
+ ctx.send_node(enum_value_set, attrgetter('_markers'), ctx.send_markers)
435
+ ctx.send_nodes(enum_value_set, attrgetter('_enums'), PythonSender.send_right_padded, lambda t: t.element.id)
436
+ ctx.send_value(enum_value_set, attrgetter('_terminated_with_semicolon'))
437
+ return enum_value_set
438
+
439
+ def visit_field_access(self, field_access: FieldAccess, ctx: SenderContext) -> J:
440
+ ctx.send_value(field_access, attrgetter('_id'))
441
+ ctx.send_node(field_access, attrgetter('_prefix'), PythonSender.send_space)
442
+ ctx.send_node(field_access, attrgetter('_markers'), ctx.send_markers)
443
+ ctx.send_node(field_access, attrgetter('_target'), ctx.send_tree)
444
+ ctx.send_node(field_access, attrgetter('_name'), PythonSender.send_left_padded)
445
+ ctx.send_typed_value(field_access, attrgetter('_type'))
446
+ return field_access
447
+
448
+ def visit_for_each_loop(self, for_each_loop: ForEachLoop, ctx: SenderContext) -> J:
449
+ ctx.send_value(for_each_loop, attrgetter('_id'))
450
+ ctx.send_node(for_each_loop, attrgetter('_prefix'), PythonSender.send_space)
451
+ ctx.send_node(for_each_loop, attrgetter('_markers'), ctx.send_markers)
452
+ ctx.send_node(for_each_loop, attrgetter('_control'), ctx.send_tree)
453
+ ctx.send_node(for_each_loop, attrgetter('_body'), PythonSender.send_right_padded)
454
+ return for_each_loop
455
+
456
+ def visit_for_each_control(self, control: ForEachLoop.Control, ctx: SenderContext) -> J:
457
+ ctx.send_value(control, attrgetter('_id'))
458
+ ctx.send_node(control, attrgetter('_prefix'), PythonSender.send_space)
459
+ ctx.send_node(control, attrgetter('_markers'), ctx.send_markers)
460
+ ctx.send_node(control, attrgetter('_variable'), PythonSender.send_right_padded)
461
+ ctx.send_node(control, attrgetter('_iterable'), PythonSender.send_right_padded)
462
+ return control
463
+
464
+ def visit_for_loop(self, for_loop: ForLoop, ctx: SenderContext) -> J:
465
+ ctx.send_value(for_loop, attrgetter('_id'))
466
+ ctx.send_node(for_loop, attrgetter('_prefix'), PythonSender.send_space)
467
+ ctx.send_node(for_loop, attrgetter('_markers'), ctx.send_markers)
468
+ ctx.send_node(for_loop, attrgetter('_control'), ctx.send_tree)
469
+ ctx.send_node(for_loop, attrgetter('_body'), PythonSender.send_right_padded)
470
+ return for_loop
471
+
472
+ def visit_for_control(self, control: ForLoop.Control, ctx: SenderContext) -> J:
473
+ ctx.send_value(control, attrgetter('_id'))
474
+ ctx.send_node(control, attrgetter('_prefix'), PythonSender.send_space)
475
+ ctx.send_node(control, attrgetter('_markers'), ctx.send_markers)
476
+ ctx.send_nodes(control, attrgetter('_init'), PythonSender.send_right_padded, lambda t: t.element.id)
477
+ ctx.send_node(control, attrgetter('_condition'), PythonSender.send_right_padded)
478
+ ctx.send_nodes(control, attrgetter('_update'), PythonSender.send_right_padded, lambda t: t.element.id)
479
+ return control
480
+
481
+ def visit_parenthesized_type_tree(self, parenthesized_type_tree: ParenthesizedTypeTree, ctx: SenderContext) -> J:
482
+ ctx.send_value(parenthesized_type_tree, attrgetter('_id'))
483
+ ctx.send_node(parenthesized_type_tree, attrgetter('_prefix'), PythonSender.send_space)
484
+ ctx.send_node(parenthesized_type_tree, attrgetter('_markers'), ctx.send_markers)
485
+ ctx.send_nodes(parenthesized_type_tree, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
486
+ ctx.send_node(parenthesized_type_tree, attrgetter('_parenthesized_type'), ctx.send_tree)
487
+ return parenthesized_type_tree
488
+
489
+ def visit_identifier(self, identifier: Identifier, ctx: SenderContext) -> J:
490
+ ctx.send_value(identifier, attrgetter('_id'))
491
+ ctx.send_node(identifier, attrgetter('_prefix'), PythonSender.send_space)
492
+ ctx.send_node(identifier, attrgetter('_markers'), ctx.send_markers)
493
+ ctx.send_nodes(identifier, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
494
+ ctx.send_value(identifier, attrgetter('_simple_name'))
495
+ ctx.send_typed_value(identifier, attrgetter('_type'))
496
+ ctx.send_typed_value(identifier, attrgetter('_field_type'))
497
+ return identifier
498
+
499
+ def visit_if(self, if_: If, ctx: SenderContext) -> J:
500
+ ctx.send_value(if_, attrgetter('_id'))
501
+ ctx.send_node(if_, attrgetter('_prefix'), PythonSender.send_space)
502
+ ctx.send_node(if_, attrgetter('_markers'), ctx.send_markers)
503
+ ctx.send_node(if_, attrgetter('_if_condition'), ctx.send_tree)
504
+ ctx.send_node(if_, attrgetter('_then_part'), PythonSender.send_right_padded)
505
+ ctx.send_node(if_, attrgetter('_else_part'), ctx.send_tree)
506
+ return if_
507
+
508
+ def visit_else(self, else_: If.Else, ctx: SenderContext) -> J:
509
+ ctx.send_value(else_, attrgetter('_id'))
510
+ ctx.send_node(else_, attrgetter('_prefix'), PythonSender.send_space)
511
+ ctx.send_node(else_, attrgetter('_markers'), ctx.send_markers)
512
+ ctx.send_node(else_, attrgetter('_body'), PythonSender.send_right_padded)
513
+ return else_
514
+
515
+ def visit_import(self, import_: Import, ctx: SenderContext) -> J:
516
+ ctx.send_value(import_, attrgetter('_id'))
517
+ ctx.send_node(import_, attrgetter('_prefix'), PythonSender.send_space)
518
+ ctx.send_node(import_, attrgetter('_markers'), ctx.send_markers)
519
+ ctx.send_node(import_, attrgetter('_static'), PythonSender.send_left_padded)
520
+ ctx.send_node(import_, attrgetter('_qualid'), ctx.send_tree)
521
+ ctx.send_node(import_, attrgetter('_alias'), PythonSender.send_left_padded)
522
+ return import_
523
+
524
+ def visit_instance_of(self, instance_of: InstanceOf, ctx: SenderContext) -> J:
525
+ ctx.send_value(instance_of, attrgetter('_id'))
526
+ ctx.send_node(instance_of, attrgetter('_prefix'), PythonSender.send_space)
527
+ ctx.send_node(instance_of, attrgetter('_markers'), ctx.send_markers)
528
+ ctx.send_node(instance_of, attrgetter('_expression'), PythonSender.send_right_padded)
529
+ ctx.send_node(instance_of, attrgetter('_clazz'), ctx.send_tree)
530
+ ctx.send_node(instance_of, attrgetter('_pattern'), ctx.send_tree)
531
+ ctx.send_typed_value(instance_of, attrgetter('_type'))
532
+ return instance_of
533
+
534
+ def visit_intersection_type(self, intersection_type: IntersectionType, ctx: SenderContext) -> J:
535
+ ctx.send_value(intersection_type, attrgetter('_id'))
536
+ ctx.send_node(intersection_type, attrgetter('_prefix'), PythonSender.send_space)
537
+ ctx.send_node(intersection_type, attrgetter('_markers'), ctx.send_markers)
538
+ ctx.send_node(intersection_type, attrgetter('_bounds'), PythonSender.send_container)
539
+ return intersection_type
540
+
541
+ def visit_label(self, label: Label, ctx: SenderContext) -> J:
542
+ ctx.send_value(label, attrgetter('_id'))
543
+ ctx.send_node(label, attrgetter('_prefix'), PythonSender.send_space)
544
+ ctx.send_node(label, attrgetter('_markers'), ctx.send_markers)
545
+ ctx.send_node(label, attrgetter('_label'), PythonSender.send_right_padded)
546
+ ctx.send_node(label, attrgetter('_statement'), ctx.send_tree)
547
+ return label
548
+
549
+ def visit_lambda(self, lambda_: Lambda, ctx: SenderContext) -> J:
550
+ ctx.send_value(lambda_, attrgetter('_id'))
551
+ ctx.send_node(lambda_, attrgetter('_prefix'), PythonSender.send_space)
552
+ ctx.send_node(lambda_, attrgetter('_markers'), ctx.send_markers)
553
+ ctx.send_node(lambda_, attrgetter('_parameters'), ctx.send_tree)
554
+ ctx.send_node(lambda_, attrgetter('_arrow'), PythonSender.send_space)
555
+ ctx.send_node(lambda_, attrgetter('_body'), ctx.send_tree)
556
+ ctx.send_typed_value(lambda_, attrgetter('_type'))
557
+ return lambda_
558
+
559
+ def visit_lambda_parameters(self, parameters: Lambda.Parameters, ctx: SenderContext) -> J:
560
+ ctx.send_value(parameters, attrgetter('_id'))
561
+ ctx.send_node(parameters, attrgetter('_prefix'), PythonSender.send_space)
562
+ ctx.send_node(parameters, attrgetter('_markers'), ctx.send_markers)
563
+ ctx.send_value(parameters, attrgetter('_parenthesized'))
564
+ ctx.send_nodes(parameters, attrgetter('_parameters'), PythonSender.send_right_padded, lambda t: t.element.id)
565
+ return parameters
566
+
567
+ def visit_literal(self, literal: Literal, ctx: SenderContext) -> J:
568
+ ctx.send_value(literal, attrgetter('_id'))
569
+ ctx.send_node(literal, attrgetter('_prefix'), PythonSender.send_space)
570
+ ctx.send_node(literal, attrgetter('_markers'), ctx.send_markers)
571
+ ctx.send_typed_value(literal, attrgetter('_value'))
572
+ ctx.send_value(literal, attrgetter('_value_source'))
573
+ ctx.send_values(literal, attrgetter('_unicode_escapes'), lambda x: x)
574
+ ctx.send_value(literal, attrgetter('_type'))
575
+ return literal
576
+
577
+ def visit_member_reference(self, member_reference: MemberReference, ctx: SenderContext) -> J:
578
+ ctx.send_value(member_reference, attrgetter('_id'))
579
+ ctx.send_node(member_reference, attrgetter('_prefix'), PythonSender.send_space)
580
+ ctx.send_node(member_reference, attrgetter('_markers'), ctx.send_markers)
581
+ ctx.send_node(member_reference, attrgetter('_containing'), PythonSender.send_right_padded)
582
+ ctx.send_node(member_reference, attrgetter('_type_parameters'), PythonSender.send_container)
583
+ ctx.send_node(member_reference, attrgetter('_reference'), PythonSender.send_left_padded)
584
+ ctx.send_typed_value(member_reference, attrgetter('_type'))
585
+ ctx.send_typed_value(member_reference, attrgetter('_method_type'))
586
+ ctx.send_typed_value(member_reference, attrgetter('_variable_type'))
587
+ return member_reference
588
+
589
+ def visit_method_declaration(self, method_declaration: MethodDeclaration, ctx: SenderContext) -> J:
590
+ ctx.send_value(method_declaration, attrgetter('_id'))
591
+ ctx.send_node(method_declaration, attrgetter('_prefix'), PythonSender.send_space)
592
+ ctx.send_node(method_declaration, attrgetter('_markers'), ctx.send_markers)
593
+ ctx.send_nodes(method_declaration, attrgetter('_leading_annotations'), ctx.send_tree, attrgetter('id'))
594
+ ctx.send_nodes(method_declaration, attrgetter('_modifiers'), ctx.send_tree, attrgetter('id'))
595
+ ctx.send_node(method_declaration, attrgetter('_type_parameters'), ctx.send_tree)
596
+ ctx.send_node(method_declaration, attrgetter('_return_type_expression'), ctx.send_tree)
597
+ ctx.send_node(method_declaration, attrgetter('_name'), self.send_method_identifier_with_annotations)
598
+ ctx.send_node(method_declaration, attrgetter('_parameters'), PythonSender.send_container)
599
+ ctx.send_node(method_declaration, attrgetter('_throws'), PythonSender.send_container)
600
+ ctx.send_node(method_declaration, attrgetter('_body'), ctx.send_tree)
601
+ ctx.send_node(method_declaration, attrgetter('_default_value'), PythonSender.send_left_padded)
602
+ ctx.send_typed_value(method_declaration, attrgetter('_method_type'))
603
+ return method_declaration
604
+
605
+ def send_method_identifier_with_annotations(self, identifier_with_annotations: MethodDeclaration.IdentifierWithAnnotations, ctx: SenderContext) -> None:
606
+ ctx.send_node(identifier_with_annotations, attrgetter('identifier'), ctx.send_tree)
607
+ ctx.send_nodes(identifier_with_annotations, attrgetter('annotations'), ctx.send_tree, attrgetter('id'))
608
+
609
+ def visit_method_invocation(self, method_invocation: MethodInvocation, ctx: SenderContext) -> J:
610
+ ctx.send_value(method_invocation, attrgetter('_id'))
611
+ ctx.send_node(method_invocation, attrgetter('_prefix'), PythonSender.send_space)
612
+ ctx.send_node(method_invocation, attrgetter('_markers'), ctx.send_markers)
613
+ ctx.send_node(method_invocation, attrgetter('_select'), PythonSender.send_right_padded)
614
+ ctx.send_node(method_invocation, attrgetter('_type_parameters'), PythonSender.send_container)
615
+ ctx.send_node(method_invocation, attrgetter('_name'), ctx.send_tree)
616
+ ctx.send_node(method_invocation, attrgetter('_arguments'), PythonSender.send_container)
617
+ ctx.send_typed_value(method_invocation, attrgetter('_method_type'))
618
+ return method_invocation
619
+
620
+ def visit_modifier(self, modifier: Modifier, ctx: SenderContext) -> J:
621
+ ctx.send_value(modifier, attrgetter('_id'))
622
+ ctx.send_node(modifier, attrgetter('_prefix'), PythonSender.send_space)
623
+ ctx.send_node(modifier, attrgetter('_markers'), ctx.send_markers)
624
+ ctx.send_value(modifier, attrgetter('_keyword'))
625
+ ctx.send_value(modifier, attrgetter('_type'))
626
+ ctx.send_nodes(modifier, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
627
+ return modifier
628
+
629
+ def visit_multi_catch(self, multi_catch: MultiCatch, ctx: SenderContext) -> J:
630
+ ctx.send_value(multi_catch, attrgetter('_id'))
631
+ ctx.send_node(multi_catch, attrgetter('_prefix'), PythonSender.send_space)
632
+ ctx.send_node(multi_catch, attrgetter('_markers'), ctx.send_markers)
633
+ ctx.send_nodes(multi_catch, attrgetter('_alternatives'), PythonSender.send_right_padded, lambda t: t.element.id)
634
+ return multi_catch
635
+
636
+ def visit_new_array(self, new_array: NewArray, ctx: SenderContext) -> J:
637
+ ctx.send_value(new_array, attrgetter('_id'))
638
+ ctx.send_node(new_array, attrgetter('_prefix'), PythonSender.send_space)
639
+ ctx.send_node(new_array, attrgetter('_markers'), ctx.send_markers)
640
+ ctx.send_node(new_array, attrgetter('_type_expression'), ctx.send_tree)
641
+ ctx.send_nodes(new_array, attrgetter('_dimensions'), ctx.send_tree, attrgetter('id'))
642
+ ctx.send_node(new_array, attrgetter('_initializer'), PythonSender.send_container)
643
+ ctx.send_typed_value(new_array, attrgetter('_type'))
644
+ return new_array
645
+
646
+ def visit_array_dimension(self, array_dimension: ArrayDimension, ctx: SenderContext) -> J:
647
+ ctx.send_value(array_dimension, attrgetter('_id'))
648
+ ctx.send_node(array_dimension, attrgetter('_prefix'), PythonSender.send_space)
649
+ ctx.send_node(array_dimension, attrgetter('_markers'), ctx.send_markers)
650
+ ctx.send_node(array_dimension, attrgetter('_index'), PythonSender.send_right_padded)
651
+ return array_dimension
652
+
653
+ def visit_new_class(self, new_class: NewClass, ctx: SenderContext) -> J:
654
+ ctx.send_value(new_class, attrgetter('_id'))
655
+ ctx.send_node(new_class, attrgetter('_prefix'), PythonSender.send_space)
656
+ ctx.send_node(new_class, attrgetter('_markers'), ctx.send_markers)
657
+ ctx.send_node(new_class, attrgetter('_enclosing'), PythonSender.send_right_padded)
658
+ ctx.send_node(new_class, attrgetter('_new'), PythonSender.send_space)
659
+ ctx.send_node(new_class, attrgetter('_clazz'), ctx.send_tree)
660
+ ctx.send_node(new_class, attrgetter('_arguments'), PythonSender.send_container)
661
+ ctx.send_node(new_class, attrgetter('_body'), ctx.send_tree)
662
+ ctx.send_typed_value(new_class, attrgetter('_constructor_type'))
663
+ return new_class
664
+
665
+ def visit_nullable_type(self, nullable_type: NullableType, ctx: SenderContext) -> J:
666
+ ctx.send_value(nullable_type, attrgetter('_id'))
667
+ ctx.send_node(nullable_type, attrgetter('_prefix'), PythonSender.send_space)
668
+ ctx.send_node(nullable_type, attrgetter('_markers'), ctx.send_markers)
669
+ ctx.send_nodes(nullable_type, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
670
+ ctx.send_node(nullable_type, attrgetter('_type_tree'), PythonSender.send_right_padded)
671
+ return nullable_type
672
+
673
+ def visit_package(self, package: Package, ctx: SenderContext) -> J:
674
+ ctx.send_value(package, attrgetter('_id'))
675
+ ctx.send_node(package, attrgetter('_prefix'), PythonSender.send_space)
676
+ ctx.send_node(package, attrgetter('_markers'), ctx.send_markers)
677
+ ctx.send_node(package, attrgetter('_expression'), ctx.send_tree)
678
+ ctx.send_nodes(package, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
679
+ return package
680
+
681
+ def visit_parameterized_type(self, parameterized_type: ParameterizedType, ctx: SenderContext) -> J:
682
+ ctx.send_value(parameterized_type, attrgetter('_id'))
683
+ ctx.send_node(parameterized_type, attrgetter('_prefix'), PythonSender.send_space)
684
+ ctx.send_node(parameterized_type, attrgetter('_markers'), ctx.send_markers)
685
+ ctx.send_node(parameterized_type, attrgetter('_clazz'), ctx.send_tree)
686
+ ctx.send_node(parameterized_type, attrgetter('_type_parameters'), PythonSender.send_container)
687
+ ctx.send_typed_value(parameterized_type, attrgetter('_type'))
688
+ return parameterized_type
689
+
690
+ def visit_parentheses(self, parentheses: Parentheses[J2], ctx: SenderContext) -> J:
691
+ ctx.send_value(parentheses, attrgetter('_id'))
692
+ ctx.send_node(parentheses, attrgetter('_prefix'), PythonSender.send_space)
693
+ ctx.send_node(parentheses, attrgetter('_markers'), ctx.send_markers)
694
+ ctx.send_node(parentheses, attrgetter('_tree'), PythonSender.send_right_padded)
695
+ return parentheses
696
+
697
+ def visit_control_parentheses(self, control_parentheses: ControlParentheses[J2], ctx: SenderContext) -> J:
698
+ ctx.send_value(control_parentheses, attrgetter('_id'))
699
+ ctx.send_node(control_parentheses, attrgetter('_prefix'), PythonSender.send_space)
700
+ ctx.send_node(control_parentheses, attrgetter('_markers'), ctx.send_markers)
701
+ ctx.send_node(control_parentheses, attrgetter('_tree'), PythonSender.send_right_padded)
702
+ return control_parentheses
703
+
704
+ def visit_primitive(self, primitive: Primitive, ctx: SenderContext) -> J:
705
+ ctx.send_value(primitive, attrgetter('_id'))
706
+ ctx.send_node(primitive, attrgetter('_prefix'), PythonSender.send_space)
707
+ ctx.send_node(primitive, attrgetter('_markers'), ctx.send_markers)
708
+ ctx.send_value(primitive, attrgetter('_type'))
709
+ return primitive
710
+
711
+ def visit_return(self, return_: Return, ctx: SenderContext) -> J:
712
+ ctx.send_value(return_, attrgetter('_id'))
713
+ ctx.send_node(return_, attrgetter('_prefix'), PythonSender.send_space)
714
+ ctx.send_node(return_, attrgetter('_markers'), ctx.send_markers)
715
+ ctx.send_node(return_, attrgetter('_expression'), ctx.send_tree)
716
+ return return_
717
+
718
+ def visit_switch(self, switch: Switch, ctx: SenderContext) -> J:
719
+ ctx.send_value(switch, attrgetter('_id'))
720
+ ctx.send_node(switch, attrgetter('_prefix'), PythonSender.send_space)
721
+ ctx.send_node(switch, attrgetter('_markers'), ctx.send_markers)
722
+ ctx.send_node(switch, attrgetter('_selector'), ctx.send_tree)
723
+ ctx.send_node(switch, attrgetter('_cases'), ctx.send_tree)
724
+ return switch
725
+
726
+ def visit_switch_expression(self, switch_expression: SwitchExpression, ctx: SenderContext) -> J:
727
+ ctx.send_value(switch_expression, attrgetter('_id'))
728
+ ctx.send_node(switch_expression, attrgetter('_prefix'), PythonSender.send_space)
729
+ ctx.send_node(switch_expression, attrgetter('_markers'), ctx.send_markers)
730
+ ctx.send_node(switch_expression, attrgetter('_selector'), ctx.send_tree)
731
+ ctx.send_node(switch_expression, attrgetter('_cases'), ctx.send_tree)
732
+ return switch_expression
733
+
734
+ def visit_synchronized(self, synchronized: Synchronized, ctx: SenderContext) -> J:
735
+ ctx.send_value(synchronized, attrgetter('_id'))
736
+ ctx.send_node(synchronized, attrgetter('_prefix'), PythonSender.send_space)
737
+ ctx.send_node(synchronized, attrgetter('_markers'), ctx.send_markers)
738
+ ctx.send_node(synchronized, attrgetter('_lock'), ctx.send_tree)
739
+ ctx.send_node(synchronized, attrgetter('_body'), ctx.send_tree)
740
+ return synchronized
741
+
742
+ def visit_ternary(self, ternary: Ternary, ctx: SenderContext) -> J:
743
+ ctx.send_value(ternary, attrgetter('_id'))
744
+ ctx.send_node(ternary, attrgetter('_prefix'), PythonSender.send_space)
745
+ ctx.send_node(ternary, attrgetter('_markers'), ctx.send_markers)
746
+ ctx.send_node(ternary, attrgetter('_condition'), ctx.send_tree)
747
+ ctx.send_node(ternary, attrgetter('_true_part'), PythonSender.send_left_padded)
748
+ ctx.send_node(ternary, attrgetter('_false_part'), PythonSender.send_left_padded)
749
+ ctx.send_typed_value(ternary, attrgetter('_type'))
750
+ return ternary
751
+
752
+ def visit_throw(self, throw: Throw, ctx: SenderContext) -> J:
753
+ ctx.send_value(throw, attrgetter('_id'))
754
+ ctx.send_node(throw, attrgetter('_prefix'), PythonSender.send_space)
755
+ ctx.send_node(throw, attrgetter('_markers'), ctx.send_markers)
756
+ ctx.send_node(throw, attrgetter('_exception'), ctx.send_tree)
757
+ return throw
758
+
759
+ def visit_try(self, try_: Try, ctx: SenderContext) -> J:
760
+ ctx.send_value(try_, attrgetter('_id'))
761
+ ctx.send_node(try_, attrgetter('_prefix'), PythonSender.send_space)
762
+ ctx.send_node(try_, attrgetter('_markers'), ctx.send_markers)
763
+ ctx.send_node(try_, attrgetter('_resources'), PythonSender.send_container)
764
+ ctx.send_node(try_, attrgetter('_body'), ctx.send_tree)
765
+ ctx.send_nodes(try_, attrgetter('_catches'), ctx.send_tree, attrgetter('id'))
766
+ ctx.send_node(try_, attrgetter('_finally'), PythonSender.send_left_padded)
767
+ return try_
768
+
769
+ def visit_try_resource(self, resource: Try.Resource, ctx: SenderContext) -> J:
770
+ ctx.send_value(resource, attrgetter('_id'))
771
+ ctx.send_node(resource, attrgetter('_prefix'), PythonSender.send_space)
772
+ ctx.send_node(resource, attrgetter('_markers'), ctx.send_markers)
773
+ ctx.send_node(resource, attrgetter('_variable_declarations'), ctx.send_tree)
774
+ ctx.send_value(resource, attrgetter('_terminated_with_semicolon'))
775
+ return resource
776
+
777
+ def visit_catch(self, catch: Try.Catch, ctx: SenderContext) -> J:
778
+ ctx.send_value(catch, attrgetter('_id'))
779
+ ctx.send_node(catch, attrgetter('_prefix'), PythonSender.send_space)
780
+ ctx.send_node(catch, attrgetter('_markers'), ctx.send_markers)
781
+ ctx.send_node(catch, attrgetter('_parameter'), ctx.send_tree)
782
+ ctx.send_node(catch, attrgetter('_body'), ctx.send_tree)
783
+ return catch
784
+
785
+ def visit_type_cast(self, type_cast: TypeCast, ctx: SenderContext) -> J:
786
+ ctx.send_value(type_cast, attrgetter('_id'))
787
+ ctx.send_node(type_cast, attrgetter('_prefix'), PythonSender.send_space)
788
+ ctx.send_node(type_cast, attrgetter('_markers'), ctx.send_markers)
789
+ ctx.send_node(type_cast, attrgetter('_clazz'), ctx.send_tree)
790
+ ctx.send_node(type_cast, attrgetter('_expression'), ctx.send_tree)
791
+ return type_cast
792
+
793
+ def visit_type_parameter(self, type_parameter: TypeParameter, ctx: SenderContext) -> J:
794
+ ctx.send_value(type_parameter, attrgetter('_id'))
795
+ ctx.send_node(type_parameter, attrgetter('_prefix'), PythonSender.send_space)
796
+ ctx.send_node(type_parameter, attrgetter('_markers'), ctx.send_markers)
797
+ ctx.send_nodes(type_parameter, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
798
+ ctx.send_nodes(type_parameter, attrgetter('_modifiers'), ctx.send_tree, attrgetter('id'))
799
+ ctx.send_node(type_parameter, attrgetter('_name'), ctx.send_tree)
800
+ ctx.send_node(type_parameter, attrgetter('_bounds'), PythonSender.send_container)
801
+ return type_parameter
802
+
803
+ def visit_type_parameters(self, type_parameters: TypeParameters, ctx: SenderContext) -> J:
804
+ ctx.send_value(type_parameters, attrgetter('_id'))
805
+ ctx.send_node(type_parameters, attrgetter('_prefix'), PythonSender.send_space)
806
+ ctx.send_node(type_parameters, attrgetter('_markers'), ctx.send_markers)
807
+ ctx.send_nodes(type_parameters, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
808
+ ctx.send_nodes(type_parameters, attrgetter('_type_parameters'), PythonSender.send_right_padded, lambda t: t.element.id)
809
+ return type_parameters
810
+
811
+ def visit_unary(self, unary: Unary, ctx: SenderContext) -> J:
812
+ ctx.send_value(unary, attrgetter('_id'))
813
+ ctx.send_node(unary, attrgetter('_prefix'), PythonSender.send_space)
814
+ ctx.send_node(unary, attrgetter('_markers'), ctx.send_markers)
815
+ ctx.send_node(unary, attrgetter('_operator'), PythonSender.send_left_padded)
816
+ ctx.send_node(unary, attrgetter('_expression'), ctx.send_tree)
817
+ ctx.send_typed_value(unary, attrgetter('_type'))
818
+ return unary
819
+
820
+ def visit_variable_declarations(self, variable_declarations: VariableDeclarations, ctx: SenderContext) -> J:
821
+ ctx.send_value(variable_declarations, attrgetter('_id'))
822
+ ctx.send_node(variable_declarations, attrgetter('_prefix'), PythonSender.send_space)
823
+ ctx.send_node(variable_declarations, attrgetter('_markers'), ctx.send_markers)
824
+ ctx.send_nodes(variable_declarations, attrgetter('_leading_annotations'), ctx.send_tree, attrgetter('id'))
825
+ ctx.send_nodes(variable_declarations, attrgetter('_modifiers'), ctx.send_tree, attrgetter('id'))
826
+ ctx.send_node(variable_declarations, attrgetter('_type_expression'), ctx.send_tree)
827
+ ctx.send_node(variable_declarations, attrgetter('_varargs'), PythonSender.send_space)
828
+ ctx.send_nodes(variable_declarations, attrgetter('_dimensions_before_name'), PythonSender.send_left_padded, lambda t: t)
829
+ ctx.send_nodes(variable_declarations, attrgetter('_variables'), PythonSender.send_right_padded, lambda t: t.element.id)
830
+ return variable_declarations
831
+
832
+ def visit_variable(self, named_variable: VariableDeclarations.NamedVariable, ctx: SenderContext) -> J:
833
+ ctx.send_value(named_variable, attrgetter('_id'))
834
+ ctx.send_node(named_variable, attrgetter('_prefix'), PythonSender.send_space)
835
+ ctx.send_node(named_variable, attrgetter('_markers'), ctx.send_markers)
836
+ ctx.send_node(named_variable, attrgetter('_name'), ctx.send_tree)
837
+ ctx.send_nodes(named_variable, attrgetter('_dimensions_after_name'), PythonSender.send_left_padded, lambda t: t)
838
+ ctx.send_node(named_variable, attrgetter('_initializer'), PythonSender.send_left_padded)
839
+ ctx.send_typed_value(named_variable, attrgetter('_variable_type'))
840
+ return named_variable
841
+
842
+ def visit_while_loop(self, while_loop: WhileLoop, ctx: SenderContext) -> J:
843
+ ctx.send_value(while_loop, attrgetter('_id'))
844
+ ctx.send_node(while_loop, attrgetter('_prefix'), PythonSender.send_space)
845
+ ctx.send_node(while_loop, attrgetter('_markers'), ctx.send_markers)
846
+ ctx.send_node(while_loop, attrgetter('_condition'), ctx.send_tree)
847
+ ctx.send_node(while_loop, attrgetter('_body'), PythonSender.send_right_padded)
848
+ return while_loop
849
+
850
+ def visit_wildcard(self, wildcard: Wildcard, ctx: SenderContext) -> J:
851
+ ctx.send_value(wildcard, attrgetter('_id'))
852
+ ctx.send_node(wildcard, attrgetter('_prefix'), PythonSender.send_space)
853
+ ctx.send_node(wildcard, attrgetter('_markers'), ctx.send_markers)
854
+ ctx.send_node(wildcard, attrgetter('_bound'), PythonSender.send_left_padded)
855
+ ctx.send_node(wildcard, attrgetter('_bounded_type'), ctx.send_tree)
856
+ return wildcard
857
+
858
+ def visit_yield(self, yield_: Yield, ctx: SenderContext) -> J:
859
+ ctx.send_value(yield_, attrgetter('_id'))
860
+ ctx.send_node(yield_, attrgetter('_prefix'), PythonSender.send_space)
861
+ ctx.send_node(yield_, attrgetter('_markers'), ctx.send_markers)
862
+ ctx.send_value(yield_, attrgetter('_implicit'))
863
+ ctx.send_node(yield_, attrgetter('_value'), ctx.send_tree)
864
+ return yield_
865
+
866
+ def visit_unknown(self, unknown: Unknown, ctx: SenderContext) -> J:
867
+ ctx.send_value(unknown, attrgetter('_id'))
868
+ ctx.send_node(unknown, attrgetter('_prefix'), PythonSender.send_space)
869
+ ctx.send_node(unknown, attrgetter('_markers'), ctx.send_markers)
870
+ ctx.send_node(unknown, attrgetter('_source'), ctx.send_tree)
871
+ return unknown
872
+
873
+ def visit_unknown_source(self, source: Unknown.Source, ctx: SenderContext) -> J:
874
+ ctx.send_value(source, attrgetter('_id'))
875
+ ctx.send_node(source, attrgetter('_prefix'), PythonSender.send_space)
876
+ ctx.send_node(source, attrgetter('_markers'), ctx.send_markers)
877
+ ctx.send_value(source, attrgetter('_text'))
878
+ return source
879
+
880
+ @classmethod
881
+ def send_container(cls, container: JContainer[T], ctx: SenderContext):
882
+ extensions.send_container(container, ctx)
883
+
884
+ @classmethod
885
+ def send_left_padded(cls, left_padded: JLeftPadded[T], ctx: SenderContext):
886
+ extensions.send_left_padded(left_padded, ctx)
887
+
888
+ @classmethod
889
+ def send_right_padded(cls, right_padded: JRightPadded[T], ctx: SenderContext):
890
+ extensions.send_right_padded(right_padded, ctx)
891
+
892
+ @classmethod
893
+ def send_space(cls, space: Space, ctx: SenderContext):
894
+ extensions.send_space(space, ctx)