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,659 @@
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.java import *
9
+ from rewrite.java.support_types import *
10
+ from . import extensions
11
+
12
+ class JavaSender(Sender):
13
+ def send(self, after: T, before: Optional[T], ctx: SenderContext) -> None:
14
+ visitor = self.Visitor()
15
+ visitor.visit(after, ctx.fork(visitor, before))
16
+
17
+ class Visitor(JavaVisitor[SenderContext]):
18
+ def visit(self, tree: Optional[Tree], ctx: SenderContext, parent: Optional[Cursor] = None) -> J:
19
+ if parent is not None:
20
+ self.cursor = parent
21
+
22
+ self.cursor = Cursor(self.cursor, tree)
23
+ ctx.send_node(tree, lambda x: x, ctx.send_tree)
24
+ self.cursor = self.cursor.parent
25
+
26
+ return cast(J, tree)
27
+
28
+ def visit_annotated_type(self, annotated_type: AnnotatedType, ctx: SenderContext) -> J:
29
+ ctx.send_value(annotated_type, attrgetter('_id'))
30
+ ctx.send_node(annotated_type, attrgetter('_prefix'), JavaSender.send_space)
31
+ ctx.send_node(annotated_type, attrgetter('_markers'), ctx.send_markers)
32
+ ctx.send_nodes(annotated_type, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
33
+ ctx.send_node(annotated_type, attrgetter('_type_expression'), ctx.send_tree)
34
+ return annotated_type
35
+
36
+ def visit_annotation(self, annotation: Annotation, ctx: SenderContext) -> J:
37
+ ctx.send_value(annotation, attrgetter('_id'))
38
+ ctx.send_node(annotation, attrgetter('_prefix'), JavaSender.send_space)
39
+ ctx.send_node(annotation, attrgetter('_markers'), ctx.send_markers)
40
+ ctx.send_node(annotation, attrgetter('_annotation_type'), ctx.send_tree)
41
+ ctx.send_node(annotation, attrgetter('_arguments'), JavaSender.send_container)
42
+ return annotation
43
+
44
+ def visit_array_access(self, array_access: ArrayAccess, ctx: SenderContext) -> J:
45
+ ctx.send_value(array_access, attrgetter('_id'))
46
+ ctx.send_node(array_access, attrgetter('_prefix'), JavaSender.send_space)
47
+ ctx.send_node(array_access, attrgetter('_markers'), ctx.send_markers)
48
+ ctx.send_node(array_access, attrgetter('_indexed'), ctx.send_tree)
49
+ ctx.send_node(array_access, attrgetter('_dimension'), ctx.send_tree)
50
+ ctx.send_typed_value(array_access, attrgetter('_type'))
51
+ return array_access
52
+
53
+ def visit_array_type(self, array_type: ArrayType, ctx: SenderContext) -> J:
54
+ ctx.send_value(array_type, attrgetter('_id'))
55
+ ctx.send_node(array_type, attrgetter('_prefix'), JavaSender.send_space)
56
+ ctx.send_node(array_type, attrgetter('_markers'), ctx.send_markers)
57
+ ctx.send_node(array_type, attrgetter('_element_type'), ctx.send_tree)
58
+ ctx.send_nodes(array_type, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
59
+ ctx.send_node(array_type, attrgetter('_dimension'), JavaSender.send_left_padded)
60
+ ctx.send_typed_value(array_type, attrgetter('_type'))
61
+ return array_type
62
+
63
+ def visit_assert(self, assert_: Assert, ctx: SenderContext) -> J:
64
+ ctx.send_value(assert_, attrgetter('_id'))
65
+ ctx.send_node(assert_, attrgetter('_prefix'), JavaSender.send_space)
66
+ ctx.send_node(assert_, attrgetter('_markers'), ctx.send_markers)
67
+ ctx.send_node(assert_, attrgetter('_condition'), ctx.send_tree)
68
+ ctx.send_node(assert_, attrgetter('_detail'), JavaSender.send_left_padded)
69
+ return assert_
70
+
71
+ def visit_assignment(self, assignment: Assignment, ctx: SenderContext) -> J:
72
+ ctx.send_value(assignment, attrgetter('_id'))
73
+ ctx.send_node(assignment, attrgetter('_prefix'), JavaSender.send_space)
74
+ ctx.send_node(assignment, attrgetter('_markers'), ctx.send_markers)
75
+ ctx.send_node(assignment, attrgetter('_variable'), ctx.send_tree)
76
+ ctx.send_node(assignment, attrgetter('_assignment'), JavaSender.send_left_padded)
77
+ ctx.send_typed_value(assignment, attrgetter('_type'))
78
+ return assignment
79
+
80
+ def visit_assignment_operation(self, assignment_operation: AssignmentOperation, ctx: SenderContext) -> J:
81
+ ctx.send_value(assignment_operation, attrgetter('_id'))
82
+ ctx.send_node(assignment_operation, attrgetter('_prefix'), JavaSender.send_space)
83
+ ctx.send_node(assignment_operation, attrgetter('_markers'), ctx.send_markers)
84
+ ctx.send_node(assignment_operation, attrgetter('_variable'), ctx.send_tree)
85
+ ctx.send_node(assignment_operation, attrgetter('_operator'), JavaSender.send_left_padded)
86
+ ctx.send_node(assignment_operation, attrgetter('_assignment'), ctx.send_tree)
87
+ ctx.send_typed_value(assignment_operation, attrgetter('_type'))
88
+ return assignment_operation
89
+
90
+ def visit_binary(self, binary: Binary, ctx: SenderContext) -> J:
91
+ ctx.send_value(binary, attrgetter('_id'))
92
+ ctx.send_node(binary, attrgetter('_prefix'), JavaSender.send_space)
93
+ ctx.send_node(binary, attrgetter('_markers'), ctx.send_markers)
94
+ ctx.send_node(binary, attrgetter('_left'), ctx.send_tree)
95
+ ctx.send_node(binary, attrgetter('_operator'), JavaSender.send_left_padded)
96
+ ctx.send_node(binary, attrgetter('_right'), ctx.send_tree)
97
+ ctx.send_typed_value(binary, attrgetter('_type'))
98
+ return binary
99
+
100
+ def visit_block(self, block: Block, ctx: SenderContext) -> J:
101
+ ctx.send_value(block, attrgetter('_id'))
102
+ ctx.send_node(block, attrgetter('_prefix'), JavaSender.send_space)
103
+ ctx.send_node(block, attrgetter('_markers'), ctx.send_markers)
104
+ ctx.send_node(block, attrgetter('_static'), JavaSender.send_right_padded)
105
+ ctx.send_nodes(block, attrgetter('_statements'), JavaSender.send_right_padded, lambda t: t.element.id)
106
+ ctx.send_node(block, attrgetter('_end'), JavaSender.send_space)
107
+ return block
108
+
109
+ def visit_break(self, break_: Break, ctx: SenderContext) -> J:
110
+ ctx.send_value(break_, attrgetter('_id'))
111
+ ctx.send_node(break_, attrgetter('_prefix'), JavaSender.send_space)
112
+ ctx.send_node(break_, attrgetter('_markers'), ctx.send_markers)
113
+ ctx.send_node(break_, attrgetter('_label'), ctx.send_tree)
114
+ return break_
115
+
116
+ def visit_case(self, case: Case, ctx: SenderContext) -> J:
117
+ ctx.send_value(case, attrgetter('_id'))
118
+ ctx.send_node(case, attrgetter('_prefix'), JavaSender.send_space)
119
+ ctx.send_node(case, attrgetter('_markers'), ctx.send_markers)
120
+ ctx.send_value(case, attrgetter('_type'))
121
+ ctx.send_node(case, attrgetter('_expressions'), JavaSender.send_container)
122
+ ctx.send_node(case, attrgetter('_statements'), JavaSender.send_container)
123
+ ctx.send_node(case, attrgetter('_body'), JavaSender.send_right_padded)
124
+ return case
125
+
126
+ def visit_class_declaration(self, class_declaration: ClassDeclaration, ctx: SenderContext) -> J:
127
+ ctx.send_value(class_declaration, attrgetter('_id'))
128
+ ctx.send_node(class_declaration, attrgetter('_prefix'), JavaSender.send_space)
129
+ ctx.send_node(class_declaration, attrgetter('_markers'), ctx.send_markers)
130
+ ctx.send_nodes(class_declaration, attrgetter('_leading_annotations'), ctx.send_tree, attrgetter('id'))
131
+ ctx.send_nodes(class_declaration, attrgetter('_modifiers'), ctx.send_tree, attrgetter('id'))
132
+ ctx.send_node(class_declaration, attrgetter('_kind'), ctx.send_tree)
133
+ ctx.send_node(class_declaration, attrgetter('_name'), ctx.send_tree)
134
+ ctx.send_node(class_declaration, attrgetter('_type_parameters'), JavaSender.send_container)
135
+ ctx.send_node(class_declaration, attrgetter('_primary_constructor'), JavaSender.send_container)
136
+ ctx.send_node(class_declaration, attrgetter('_extends'), JavaSender.send_left_padded)
137
+ ctx.send_node(class_declaration, attrgetter('_implements'), JavaSender.send_container)
138
+ ctx.send_node(class_declaration, attrgetter('_permits'), JavaSender.send_container)
139
+ ctx.send_node(class_declaration, attrgetter('_body'), ctx.send_tree)
140
+ ctx.send_typed_value(class_declaration, attrgetter('_type'))
141
+ return class_declaration
142
+
143
+ def visit_class_declaration_kind(self, kind: ClassDeclaration.Kind, ctx: SenderContext) -> J:
144
+ ctx.send_value(kind, attrgetter('_id'))
145
+ ctx.send_node(kind, attrgetter('_prefix'), JavaSender.send_space)
146
+ ctx.send_node(kind, attrgetter('_markers'), ctx.send_markers)
147
+ ctx.send_nodes(kind, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
148
+ ctx.send_value(kind, attrgetter('_type'))
149
+ return kind
150
+
151
+ def visit_compilation_unit(self, compilation_unit: CompilationUnit, ctx: SenderContext) -> J:
152
+ ctx.send_value(compilation_unit, attrgetter('_id'))
153
+ ctx.send_node(compilation_unit, attrgetter('_prefix'), JavaSender.send_space)
154
+ ctx.send_node(compilation_unit, attrgetter('_markers'), ctx.send_markers)
155
+ ctx.send_value(compilation_unit, attrgetter('_source_path'))
156
+ ctx.send_typed_value(compilation_unit, attrgetter('_file_attributes'))
157
+ ctx.send_value(compilation_unit, attrgetter('_charset_name'))
158
+ ctx.send_value(compilation_unit, attrgetter('_charset_bom_marked'))
159
+ ctx.send_typed_value(compilation_unit, attrgetter('_checksum'))
160
+ ctx.send_node(compilation_unit, attrgetter('_package_declaration'), JavaSender.send_right_padded)
161
+ ctx.send_nodes(compilation_unit, attrgetter('_imports'), JavaSender.send_right_padded, lambda t: t.element.id)
162
+ ctx.send_nodes(compilation_unit, attrgetter('_classes'), ctx.send_tree, attrgetter('id'))
163
+ ctx.send_node(compilation_unit, attrgetter('_eof'), JavaSender.send_space)
164
+ return compilation_unit
165
+
166
+ def visit_continue(self, continue_: Continue, ctx: SenderContext) -> J:
167
+ ctx.send_value(continue_, attrgetter('_id'))
168
+ ctx.send_node(continue_, attrgetter('_prefix'), JavaSender.send_space)
169
+ ctx.send_node(continue_, attrgetter('_markers'), ctx.send_markers)
170
+ ctx.send_node(continue_, attrgetter('_label'), ctx.send_tree)
171
+ return continue_
172
+
173
+ def visit_do_while_loop(self, do_while_loop: DoWhileLoop, ctx: SenderContext) -> J:
174
+ ctx.send_value(do_while_loop, attrgetter('_id'))
175
+ ctx.send_node(do_while_loop, attrgetter('_prefix'), JavaSender.send_space)
176
+ ctx.send_node(do_while_loop, attrgetter('_markers'), ctx.send_markers)
177
+ ctx.send_node(do_while_loop, attrgetter('_body'), JavaSender.send_right_padded)
178
+ ctx.send_node(do_while_loop, attrgetter('_while_condition'), JavaSender.send_left_padded)
179
+ return do_while_loop
180
+
181
+ def visit_empty(self, empty: Empty, ctx: SenderContext) -> J:
182
+ ctx.send_value(empty, attrgetter('_id'))
183
+ ctx.send_node(empty, attrgetter('_prefix'), JavaSender.send_space)
184
+ ctx.send_node(empty, attrgetter('_markers'), ctx.send_markers)
185
+ return empty
186
+
187
+ def visit_enum_value(self, enum_value: EnumValue, ctx: SenderContext) -> J:
188
+ ctx.send_value(enum_value, attrgetter('_id'))
189
+ ctx.send_node(enum_value, attrgetter('_prefix'), JavaSender.send_space)
190
+ ctx.send_node(enum_value, attrgetter('_markers'), ctx.send_markers)
191
+ ctx.send_nodes(enum_value, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
192
+ ctx.send_node(enum_value, attrgetter('_name'), ctx.send_tree)
193
+ ctx.send_node(enum_value, attrgetter('_initializer'), ctx.send_tree)
194
+ return enum_value
195
+
196
+ def visit_enum_value_set(self, enum_value_set: EnumValueSet, ctx: SenderContext) -> J:
197
+ ctx.send_value(enum_value_set, attrgetter('_id'))
198
+ ctx.send_node(enum_value_set, attrgetter('_prefix'), JavaSender.send_space)
199
+ ctx.send_node(enum_value_set, attrgetter('_markers'), ctx.send_markers)
200
+ ctx.send_nodes(enum_value_set, attrgetter('_enums'), JavaSender.send_right_padded, lambda t: t.element.id)
201
+ ctx.send_value(enum_value_set, attrgetter('_terminated_with_semicolon'))
202
+ return enum_value_set
203
+
204
+ def visit_field_access(self, field_access: FieldAccess, ctx: SenderContext) -> J:
205
+ ctx.send_value(field_access, attrgetter('_id'))
206
+ ctx.send_node(field_access, attrgetter('_prefix'), JavaSender.send_space)
207
+ ctx.send_node(field_access, attrgetter('_markers'), ctx.send_markers)
208
+ ctx.send_node(field_access, attrgetter('_target'), ctx.send_tree)
209
+ ctx.send_node(field_access, attrgetter('_name'), JavaSender.send_left_padded)
210
+ ctx.send_typed_value(field_access, attrgetter('_type'))
211
+ return field_access
212
+
213
+ def visit_for_each_loop(self, for_each_loop: ForEachLoop, ctx: SenderContext) -> J:
214
+ ctx.send_value(for_each_loop, attrgetter('_id'))
215
+ ctx.send_node(for_each_loop, attrgetter('_prefix'), JavaSender.send_space)
216
+ ctx.send_node(for_each_loop, attrgetter('_markers'), ctx.send_markers)
217
+ ctx.send_node(for_each_loop, attrgetter('_control'), ctx.send_tree)
218
+ ctx.send_node(for_each_loop, attrgetter('_body'), JavaSender.send_right_padded)
219
+ return for_each_loop
220
+
221
+ def visit_for_each_control(self, control: ForEachLoop.Control, ctx: SenderContext) -> J:
222
+ ctx.send_value(control, attrgetter('_id'))
223
+ ctx.send_node(control, attrgetter('_prefix'), JavaSender.send_space)
224
+ ctx.send_node(control, attrgetter('_markers'), ctx.send_markers)
225
+ ctx.send_node(control, attrgetter('_variable'), JavaSender.send_right_padded)
226
+ ctx.send_node(control, attrgetter('_iterable'), JavaSender.send_right_padded)
227
+ return control
228
+
229
+ def visit_for_loop(self, for_loop: ForLoop, ctx: SenderContext) -> J:
230
+ ctx.send_value(for_loop, attrgetter('_id'))
231
+ ctx.send_node(for_loop, attrgetter('_prefix'), JavaSender.send_space)
232
+ ctx.send_node(for_loop, attrgetter('_markers'), ctx.send_markers)
233
+ ctx.send_node(for_loop, attrgetter('_control'), ctx.send_tree)
234
+ ctx.send_node(for_loop, attrgetter('_body'), JavaSender.send_right_padded)
235
+ return for_loop
236
+
237
+ def visit_for_control(self, control: ForLoop.Control, ctx: SenderContext) -> J:
238
+ ctx.send_value(control, attrgetter('_id'))
239
+ ctx.send_node(control, attrgetter('_prefix'), JavaSender.send_space)
240
+ ctx.send_node(control, attrgetter('_markers'), ctx.send_markers)
241
+ ctx.send_nodes(control, attrgetter('_init'), JavaSender.send_right_padded, lambda t: t.element.id)
242
+ ctx.send_node(control, attrgetter('_condition'), JavaSender.send_right_padded)
243
+ ctx.send_nodes(control, attrgetter('_update'), JavaSender.send_right_padded, lambda t: t.element.id)
244
+ return control
245
+
246
+ def visit_parenthesized_type_tree(self, parenthesized_type_tree: ParenthesizedTypeTree, ctx: SenderContext) -> J:
247
+ ctx.send_value(parenthesized_type_tree, attrgetter('_id'))
248
+ ctx.send_node(parenthesized_type_tree, attrgetter('_prefix'), JavaSender.send_space)
249
+ ctx.send_node(parenthesized_type_tree, attrgetter('_markers'), ctx.send_markers)
250
+ ctx.send_nodes(parenthesized_type_tree, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
251
+ ctx.send_node(parenthesized_type_tree, attrgetter('_parenthesized_type'), ctx.send_tree)
252
+ return parenthesized_type_tree
253
+
254
+ def visit_identifier(self, identifier: Identifier, ctx: SenderContext) -> J:
255
+ ctx.send_value(identifier, attrgetter('_id'))
256
+ ctx.send_node(identifier, attrgetter('_prefix'), JavaSender.send_space)
257
+ ctx.send_node(identifier, attrgetter('_markers'), ctx.send_markers)
258
+ ctx.send_nodes(identifier, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
259
+ ctx.send_value(identifier, attrgetter('_simple_name'))
260
+ ctx.send_typed_value(identifier, attrgetter('_type'))
261
+ ctx.send_typed_value(identifier, attrgetter('_field_type'))
262
+ return identifier
263
+
264
+ def visit_if(self, if_: If, ctx: SenderContext) -> J:
265
+ ctx.send_value(if_, attrgetter('_id'))
266
+ ctx.send_node(if_, attrgetter('_prefix'), JavaSender.send_space)
267
+ ctx.send_node(if_, attrgetter('_markers'), ctx.send_markers)
268
+ ctx.send_node(if_, attrgetter('_if_condition'), ctx.send_tree)
269
+ ctx.send_node(if_, attrgetter('_then_part'), JavaSender.send_right_padded)
270
+ ctx.send_node(if_, attrgetter('_else_part'), ctx.send_tree)
271
+ return if_
272
+
273
+ def visit_else(self, else_: If.Else, ctx: SenderContext) -> J:
274
+ ctx.send_value(else_, attrgetter('_id'))
275
+ ctx.send_node(else_, attrgetter('_prefix'), JavaSender.send_space)
276
+ ctx.send_node(else_, attrgetter('_markers'), ctx.send_markers)
277
+ ctx.send_node(else_, attrgetter('_body'), JavaSender.send_right_padded)
278
+ return else_
279
+
280
+ def visit_import(self, import_: Import, ctx: SenderContext) -> J:
281
+ ctx.send_value(import_, attrgetter('_id'))
282
+ ctx.send_node(import_, attrgetter('_prefix'), JavaSender.send_space)
283
+ ctx.send_node(import_, attrgetter('_markers'), ctx.send_markers)
284
+ ctx.send_node(import_, attrgetter('_static'), JavaSender.send_left_padded)
285
+ ctx.send_node(import_, attrgetter('_qualid'), ctx.send_tree)
286
+ ctx.send_node(import_, attrgetter('_alias'), JavaSender.send_left_padded)
287
+ return import_
288
+
289
+ def visit_instance_of(self, instance_of: InstanceOf, ctx: SenderContext) -> J:
290
+ ctx.send_value(instance_of, attrgetter('_id'))
291
+ ctx.send_node(instance_of, attrgetter('_prefix'), JavaSender.send_space)
292
+ ctx.send_node(instance_of, attrgetter('_markers'), ctx.send_markers)
293
+ ctx.send_node(instance_of, attrgetter('_expression'), JavaSender.send_right_padded)
294
+ ctx.send_node(instance_of, attrgetter('_clazz'), ctx.send_tree)
295
+ ctx.send_node(instance_of, attrgetter('_pattern'), ctx.send_tree)
296
+ ctx.send_typed_value(instance_of, attrgetter('_type'))
297
+ return instance_of
298
+
299
+ def visit_intersection_type(self, intersection_type: IntersectionType, ctx: SenderContext) -> J:
300
+ ctx.send_value(intersection_type, attrgetter('_id'))
301
+ ctx.send_node(intersection_type, attrgetter('_prefix'), JavaSender.send_space)
302
+ ctx.send_node(intersection_type, attrgetter('_markers'), ctx.send_markers)
303
+ ctx.send_node(intersection_type, attrgetter('_bounds'), JavaSender.send_container)
304
+ return intersection_type
305
+
306
+ def visit_label(self, label: Label, ctx: SenderContext) -> J:
307
+ ctx.send_value(label, attrgetter('_id'))
308
+ ctx.send_node(label, attrgetter('_prefix'), JavaSender.send_space)
309
+ ctx.send_node(label, attrgetter('_markers'), ctx.send_markers)
310
+ ctx.send_node(label, attrgetter('_label'), JavaSender.send_right_padded)
311
+ ctx.send_node(label, attrgetter('_statement'), ctx.send_tree)
312
+ return label
313
+
314
+ def visit_lambda(self, lambda_: Lambda, ctx: SenderContext) -> J:
315
+ ctx.send_value(lambda_, attrgetter('_id'))
316
+ ctx.send_node(lambda_, attrgetter('_prefix'), JavaSender.send_space)
317
+ ctx.send_node(lambda_, attrgetter('_markers'), ctx.send_markers)
318
+ ctx.send_node(lambda_, attrgetter('_parameters'), ctx.send_tree)
319
+ ctx.send_node(lambda_, attrgetter('_arrow'), JavaSender.send_space)
320
+ ctx.send_node(lambda_, attrgetter('_body'), ctx.send_tree)
321
+ ctx.send_typed_value(lambda_, attrgetter('_type'))
322
+ return lambda_
323
+
324
+ def visit_lambda_parameters(self, parameters: Lambda.Parameters, ctx: SenderContext) -> J:
325
+ ctx.send_value(parameters, attrgetter('_id'))
326
+ ctx.send_node(parameters, attrgetter('_prefix'), JavaSender.send_space)
327
+ ctx.send_node(parameters, attrgetter('_markers'), ctx.send_markers)
328
+ ctx.send_value(parameters, attrgetter('_parenthesized'))
329
+ ctx.send_nodes(parameters, attrgetter('_parameters'), JavaSender.send_right_padded, lambda t: t.element.id)
330
+ return parameters
331
+
332
+ def visit_literal(self, literal: Literal, ctx: SenderContext) -> J:
333
+ ctx.send_value(literal, attrgetter('_id'))
334
+ ctx.send_node(literal, attrgetter('_prefix'), JavaSender.send_space)
335
+ ctx.send_node(literal, attrgetter('_markers'), ctx.send_markers)
336
+ ctx.send_typed_value(literal, attrgetter('_value'))
337
+ ctx.send_value(literal, attrgetter('_value_source'))
338
+ ctx.send_values(literal, attrgetter('_unicode_escapes'), lambda x: x)
339
+ ctx.send_value(literal, attrgetter('_type'))
340
+ return literal
341
+
342
+ def visit_member_reference(self, member_reference: MemberReference, ctx: SenderContext) -> J:
343
+ ctx.send_value(member_reference, attrgetter('_id'))
344
+ ctx.send_node(member_reference, attrgetter('_prefix'), JavaSender.send_space)
345
+ ctx.send_node(member_reference, attrgetter('_markers'), ctx.send_markers)
346
+ ctx.send_node(member_reference, attrgetter('_containing'), JavaSender.send_right_padded)
347
+ ctx.send_node(member_reference, attrgetter('_type_parameters'), JavaSender.send_container)
348
+ ctx.send_node(member_reference, attrgetter('_reference'), JavaSender.send_left_padded)
349
+ ctx.send_typed_value(member_reference, attrgetter('_type'))
350
+ ctx.send_typed_value(member_reference, attrgetter('_method_type'))
351
+ ctx.send_typed_value(member_reference, attrgetter('_variable_type'))
352
+ return member_reference
353
+
354
+ def visit_method_declaration(self, method_declaration: MethodDeclaration, ctx: SenderContext) -> J:
355
+ ctx.send_value(method_declaration, attrgetter('_id'))
356
+ ctx.send_node(method_declaration, attrgetter('_prefix'), JavaSender.send_space)
357
+ ctx.send_node(method_declaration, attrgetter('_markers'), ctx.send_markers)
358
+ ctx.send_nodes(method_declaration, attrgetter('_leading_annotations'), ctx.send_tree, attrgetter('id'))
359
+ ctx.send_nodes(method_declaration, attrgetter('_modifiers'), ctx.send_tree, attrgetter('id'))
360
+ ctx.send_node(method_declaration, attrgetter('_type_parameters'), ctx.send_tree)
361
+ ctx.send_node(method_declaration, attrgetter('_return_type_expression'), ctx.send_tree)
362
+ ctx.send_node(method_declaration, attrgetter('_name'), self.send_method_identifier_with_annotations)
363
+ ctx.send_node(method_declaration, attrgetter('_parameters'), JavaSender.send_container)
364
+ ctx.send_node(method_declaration, attrgetter('_throws'), JavaSender.send_container)
365
+ ctx.send_node(method_declaration, attrgetter('_body'), ctx.send_tree)
366
+ ctx.send_node(method_declaration, attrgetter('_default_value'), JavaSender.send_left_padded)
367
+ ctx.send_typed_value(method_declaration, attrgetter('_method_type'))
368
+ return method_declaration
369
+
370
+ def send_method_identifier_with_annotations(self, identifier_with_annotations: MethodDeclaration.IdentifierWithAnnotations, ctx: SenderContext) -> None:
371
+ ctx.send_node(identifier_with_annotations, attrgetter('identifier'), ctx.send_tree)
372
+ ctx.send_nodes(identifier_with_annotations, attrgetter('annotations'), ctx.send_tree, attrgetter('id'))
373
+
374
+ def visit_method_invocation(self, method_invocation: MethodInvocation, ctx: SenderContext) -> J:
375
+ ctx.send_value(method_invocation, attrgetter('_id'))
376
+ ctx.send_node(method_invocation, attrgetter('_prefix'), JavaSender.send_space)
377
+ ctx.send_node(method_invocation, attrgetter('_markers'), ctx.send_markers)
378
+ ctx.send_node(method_invocation, attrgetter('_select'), JavaSender.send_right_padded)
379
+ ctx.send_node(method_invocation, attrgetter('_type_parameters'), JavaSender.send_container)
380
+ ctx.send_node(method_invocation, attrgetter('_name'), ctx.send_tree)
381
+ ctx.send_node(method_invocation, attrgetter('_arguments'), JavaSender.send_container)
382
+ ctx.send_typed_value(method_invocation, attrgetter('_method_type'))
383
+ return method_invocation
384
+
385
+ def visit_modifier(self, modifier: Modifier, ctx: SenderContext) -> J:
386
+ ctx.send_value(modifier, attrgetter('_id'))
387
+ ctx.send_node(modifier, attrgetter('_prefix'), JavaSender.send_space)
388
+ ctx.send_node(modifier, attrgetter('_markers'), ctx.send_markers)
389
+ ctx.send_value(modifier, attrgetter('_keyword'))
390
+ ctx.send_value(modifier, attrgetter('_type'))
391
+ ctx.send_nodes(modifier, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
392
+ return modifier
393
+
394
+ def visit_multi_catch(self, multi_catch: MultiCatch, ctx: SenderContext) -> J:
395
+ ctx.send_value(multi_catch, attrgetter('_id'))
396
+ ctx.send_node(multi_catch, attrgetter('_prefix'), JavaSender.send_space)
397
+ ctx.send_node(multi_catch, attrgetter('_markers'), ctx.send_markers)
398
+ ctx.send_nodes(multi_catch, attrgetter('_alternatives'), JavaSender.send_right_padded, lambda t: t.element.id)
399
+ return multi_catch
400
+
401
+ def visit_new_array(self, new_array: NewArray, ctx: SenderContext) -> J:
402
+ ctx.send_value(new_array, attrgetter('_id'))
403
+ ctx.send_node(new_array, attrgetter('_prefix'), JavaSender.send_space)
404
+ ctx.send_node(new_array, attrgetter('_markers'), ctx.send_markers)
405
+ ctx.send_node(new_array, attrgetter('_type_expression'), ctx.send_tree)
406
+ ctx.send_nodes(new_array, attrgetter('_dimensions'), ctx.send_tree, attrgetter('id'))
407
+ ctx.send_node(new_array, attrgetter('_initializer'), JavaSender.send_container)
408
+ ctx.send_typed_value(new_array, attrgetter('_type'))
409
+ return new_array
410
+
411
+ def visit_array_dimension(self, array_dimension: ArrayDimension, ctx: SenderContext) -> J:
412
+ ctx.send_value(array_dimension, attrgetter('_id'))
413
+ ctx.send_node(array_dimension, attrgetter('_prefix'), JavaSender.send_space)
414
+ ctx.send_node(array_dimension, attrgetter('_markers'), ctx.send_markers)
415
+ ctx.send_node(array_dimension, attrgetter('_index'), JavaSender.send_right_padded)
416
+ return array_dimension
417
+
418
+ def visit_new_class(self, new_class: NewClass, ctx: SenderContext) -> J:
419
+ ctx.send_value(new_class, attrgetter('_id'))
420
+ ctx.send_node(new_class, attrgetter('_prefix'), JavaSender.send_space)
421
+ ctx.send_node(new_class, attrgetter('_markers'), ctx.send_markers)
422
+ ctx.send_node(new_class, attrgetter('_enclosing'), JavaSender.send_right_padded)
423
+ ctx.send_node(new_class, attrgetter('_new'), JavaSender.send_space)
424
+ ctx.send_node(new_class, attrgetter('_clazz'), ctx.send_tree)
425
+ ctx.send_node(new_class, attrgetter('_arguments'), JavaSender.send_container)
426
+ ctx.send_node(new_class, attrgetter('_body'), ctx.send_tree)
427
+ ctx.send_typed_value(new_class, attrgetter('_constructor_type'))
428
+ return new_class
429
+
430
+ def visit_nullable_type(self, nullable_type: NullableType, ctx: SenderContext) -> J:
431
+ ctx.send_value(nullable_type, attrgetter('_id'))
432
+ ctx.send_node(nullable_type, attrgetter('_prefix'), JavaSender.send_space)
433
+ ctx.send_node(nullable_type, attrgetter('_markers'), ctx.send_markers)
434
+ ctx.send_nodes(nullable_type, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
435
+ ctx.send_node(nullable_type, attrgetter('_type_tree'), JavaSender.send_right_padded)
436
+ return nullable_type
437
+
438
+ def visit_package(self, package: Package, ctx: SenderContext) -> J:
439
+ ctx.send_value(package, attrgetter('_id'))
440
+ ctx.send_node(package, attrgetter('_prefix'), JavaSender.send_space)
441
+ ctx.send_node(package, attrgetter('_markers'), ctx.send_markers)
442
+ ctx.send_node(package, attrgetter('_expression'), ctx.send_tree)
443
+ ctx.send_nodes(package, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
444
+ return package
445
+
446
+ def visit_parameterized_type(self, parameterized_type: ParameterizedType, ctx: SenderContext) -> J:
447
+ ctx.send_value(parameterized_type, attrgetter('_id'))
448
+ ctx.send_node(parameterized_type, attrgetter('_prefix'), JavaSender.send_space)
449
+ ctx.send_node(parameterized_type, attrgetter('_markers'), ctx.send_markers)
450
+ ctx.send_node(parameterized_type, attrgetter('_clazz'), ctx.send_tree)
451
+ ctx.send_node(parameterized_type, attrgetter('_type_parameters'), JavaSender.send_container)
452
+ ctx.send_typed_value(parameterized_type, attrgetter('_type'))
453
+ return parameterized_type
454
+
455
+ def visit_parentheses(self, parentheses: Parentheses[J2], ctx: SenderContext) -> J:
456
+ ctx.send_value(parentheses, attrgetter('_id'))
457
+ ctx.send_node(parentheses, attrgetter('_prefix'), JavaSender.send_space)
458
+ ctx.send_node(parentheses, attrgetter('_markers'), ctx.send_markers)
459
+ ctx.send_node(parentheses, attrgetter('_tree'), JavaSender.send_right_padded)
460
+ return parentheses
461
+
462
+ def visit_control_parentheses(self, control_parentheses: ControlParentheses[J2], ctx: SenderContext) -> J:
463
+ ctx.send_value(control_parentheses, attrgetter('_id'))
464
+ ctx.send_node(control_parentheses, attrgetter('_prefix'), JavaSender.send_space)
465
+ ctx.send_node(control_parentheses, attrgetter('_markers'), ctx.send_markers)
466
+ ctx.send_node(control_parentheses, attrgetter('_tree'), JavaSender.send_right_padded)
467
+ return control_parentheses
468
+
469
+ def visit_primitive(self, primitive: Primitive, ctx: SenderContext) -> J:
470
+ ctx.send_value(primitive, attrgetter('_id'))
471
+ ctx.send_node(primitive, attrgetter('_prefix'), JavaSender.send_space)
472
+ ctx.send_node(primitive, attrgetter('_markers'), ctx.send_markers)
473
+ ctx.send_value(primitive, attrgetter('_type'))
474
+ return primitive
475
+
476
+ def visit_return(self, return_: Return, ctx: SenderContext) -> J:
477
+ ctx.send_value(return_, attrgetter('_id'))
478
+ ctx.send_node(return_, attrgetter('_prefix'), JavaSender.send_space)
479
+ ctx.send_node(return_, attrgetter('_markers'), ctx.send_markers)
480
+ ctx.send_node(return_, attrgetter('_expression'), ctx.send_tree)
481
+ return return_
482
+
483
+ def visit_switch(self, switch: Switch, ctx: SenderContext) -> J:
484
+ ctx.send_value(switch, attrgetter('_id'))
485
+ ctx.send_node(switch, attrgetter('_prefix'), JavaSender.send_space)
486
+ ctx.send_node(switch, attrgetter('_markers'), ctx.send_markers)
487
+ ctx.send_node(switch, attrgetter('_selector'), ctx.send_tree)
488
+ ctx.send_node(switch, attrgetter('_cases'), ctx.send_tree)
489
+ return switch
490
+
491
+ def visit_switch_expression(self, switch_expression: SwitchExpression, ctx: SenderContext) -> J:
492
+ ctx.send_value(switch_expression, attrgetter('_id'))
493
+ ctx.send_node(switch_expression, attrgetter('_prefix'), JavaSender.send_space)
494
+ ctx.send_node(switch_expression, attrgetter('_markers'), ctx.send_markers)
495
+ ctx.send_node(switch_expression, attrgetter('_selector'), ctx.send_tree)
496
+ ctx.send_node(switch_expression, attrgetter('_cases'), ctx.send_tree)
497
+ return switch_expression
498
+
499
+ def visit_synchronized(self, synchronized: Synchronized, ctx: SenderContext) -> J:
500
+ ctx.send_value(synchronized, attrgetter('_id'))
501
+ ctx.send_node(synchronized, attrgetter('_prefix'), JavaSender.send_space)
502
+ ctx.send_node(synchronized, attrgetter('_markers'), ctx.send_markers)
503
+ ctx.send_node(synchronized, attrgetter('_lock'), ctx.send_tree)
504
+ ctx.send_node(synchronized, attrgetter('_body'), ctx.send_tree)
505
+ return synchronized
506
+
507
+ def visit_ternary(self, ternary: Ternary, ctx: SenderContext) -> J:
508
+ ctx.send_value(ternary, attrgetter('_id'))
509
+ ctx.send_node(ternary, attrgetter('_prefix'), JavaSender.send_space)
510
+ ctx.send_node(ternary, attrgetter('_markers'), ctx.send_markers)
511
+ ctx.send_node(ternary, attrgetter('_condition'), ctx.send_tree)
512
+ ctx.send_node(ternary, attrgetter('_true_part'), JavaSender.send_left_padded)
513
+ ctx.send_node(ternary, attrgetter('_false_part'), JavaSender.send_left_padded)
514
+ ctx.send_typed_value(ternary, attrgetter('_type'))
515
+ return ternary
516
+
517
+ def visit_throw(self, throw: Throw, ctx: SenderContext) -> J:
518
+ ctx.send_value(throw, attrgetter('_id'))
519
+ ctx.send_node(throw, attrgetter('_prefix'), JavaSender.send_space)
520
+ ctx.send_node(throw, attrgetter('_markers'), ctx.send_markers)
521
+ ctx.send_node(throw, attrgetter('_exception'), ctx.send_tree)
522
+ return throw
523
+
524
+ def visit_try(self, try_: Try, ctx: SenderContext) -> J:
525
+ ctx.send_value(try_, attrgetter('_id'))
526
+ ctx.send_node(try_, attrgetter('_prefix'), JavaSender.send_space)
527
+ ctx.send_node(try_, attrgetter('_markers'), ctx.send_markers)
528
+ ctx.send_node(try_, attrgetter('_resources'), JavaSender.send_container)
529
+ ctx.send_node(try_, attrgetter('_body'), ctx.send_tree)
530
+ ctx.send_nodes(try_, attrgetter('_catches'), ctx.send_tree, attrgetter('id'))
531
+ ctx.send_node(try_, attrgetter('_finally'), JavaSender.send_left_padded)
532
+ return try_
533
+
534
+ def visit_try_resource(self, resource: Try.Resource, ctx: SenderContext) -> J:
535
+ ctx.send_value(resource, attrgetter('_id'))
536
+ ctx.send_node(resource, attrgetter('_prefix'), JavaSender.send_space)
537
+ ctx.send_node(resource, attrgetter('_markers'), ctx.send_markers)
538
+ ctx.send_node(resource, attrgetter('_variable_declarations'), ctx.send_tree)
539
+ ctx.send_value(resource, attrgetter('_terminated_with_semicolon'))
540
+ return resource
541
+
542
+ def visit_catch(self, catch: Try.Catch, ctx: SenderContext) -> J:
543
+ ctx.send_value(catch, attrgetter('_id'))
544
+ ctx.send_node(catch, attrgetter('_prefix'), JavaSender.send_space)
545
+ ctx.send_node(catch, attrgetter('_markers'), ctx.send_markers)
546
+ ctx.send_node(catch, attrgetter('_parameter'), ctx.send_tree)
547
+ ctx.send_node(catch, attrgetter('_body'), ctx.send_tree)
548
+ return catch
549
+
550
+ def visit_type_cast(self, type_cast: TypeCast, ctx: SenderContext) -> J:
551
+ ctx.send_value(type_cast, attrgetter('_id'))
552
+ ctx.send_node(type_cast, attrgetter('_prefix'), JavaSender.send_space)
553
+ ctx.send_node(type_cast, attrgetter('_markers'), ctx.send_markers)
554
+ ctx.send_node(type_cast, attrgetter('_clazz'), ctx.send_tree)
555
+ ctx.send_node(type_cast, attrgetter('_expression'), ctx.send_tree)
556
+ return type_cast
557
+
558
+ def visit_type_parameter(self, type_parameter: TypeParameter, ctx: SenderContext) -> J:
559
+ ctx.send_value(type_parameter, attrgetter('_id'))
560
+ ctx.send_node(type_parameter, attrgetter('_prefix'), JavaSender.send_space)
561
+ ctx.send_node(type_parameter, attrgetter('_markers'), ctx.send_markers)
562
+ ctx.send_nodes(type_parameter, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
563
+ ctx.send_nodes(type_parameter, attrgetter('_modifiers'), ctx.send_tree, attrgetter('id'))
564
+ ctx.send_node(type_parameter, attrgetter('_name'), ctx.send_tree)
565
+ ctx.send_node(type_parameter, attrgetter('_bounds'), JavaSender.send_container)
566
+ return type_parameter
567
+
568
+ def visit_type_parameters(self, type_parameters: TypeParameters, ctx: SenderContext) -> J:
569
+ ctx.send_value(type_parameters, attrgetter('_id'))
570
+ ctx.send_node(type_parameters, attrgetter('_prefix'), JavaSender.send_space)
571
+ ctx.send_node(type_parameters, attrgetter('_markers'), ctx.send_markers)
572
+ ctx.send_nodes(type_parameters, attrgetter('_annotations'), ctx.send_tree, attrgetter('id'))
573
+ ctx.send_nodes(type_parameters, attrgetter('_type_parameters'), JavaSender.send_right_padded, lambda t: t.element.id)
574
+ return type_parameters
575
+
576
+ def visit_unary(self, unary: Unary, ctx: SenderContext) -> J:
577
+ ctx.send_value(unary, attrgetter('_id'))
578
+ ctx.send_node(unary, attrgetter('_prefix'), JavaSender.send_space)
579
+ ctx.send_node(unary, attrgetter('_markers'), ctx.send_markers)
580
+ ctx.send_node(unary, attrgetter('_operator'), JavaSender.send_left_padded)
581
+ ctx.send_node(unary, attrgetter('_expression'), ctx.send_tree)
582
+ ctx.send_typed_value(unary, attrgetter('_type'))
583
+ return unary
584
+
585
+ def visit_variable_declarations(self, variable_declarations: VariableDeclarations, ctx: SenderContext) -> J:
586
+ ctx.send_value(variable_declarations, attrgetter('_id'))
587
+ ctx.send_node(variable_declarations, attrgetter('_prefix'), JavaSender.send_space)
588
+ ctx.send_node(variable_declarations, attrgetter('_markers'), ctx.send_markers)
589
+ ctx.send_nodes(variable_declarations, attrgetter('_leading_annotations'), ctx.send_tree, attrgetter('id'))
590
+ ctx.send_nodes(variable_declarations, attrgetter('_modifiers'), ctx.send_tree, attrgetter('id'))
591
+ ctx.send_node(variable_declarations, attrgetter('_type_expression'), ctx.send_tree)
592
+ ctx.send_node(variable_declarations, attrgetter('_varargs'), JavaSender.send_space)
593
+ ctx.send_nodes(variable_declarations, attrgetter('_dimensions_before_name'), JavaSender.send_left_padded, lambda t: t)
594
+ ctx.send_nodes(variable_declarations, attrgetter('_variables'), JavaSender.send_right_padded, lambda t: t.element.id)
595
+ return variable_declarations
596
+
597
+ def visit_variable(self, named_variable: VariableDeclarations.NamedVariable, ctx: SenderContext) -> J:
598
+ ctx.send_value(named_variable, attrgetter('_id'))
599
+ ctx.send_node(named_variable, attrgetter('_prefix'), JavaSender.send_space)
600
+ ctx.send_node(named_variable, attrgetter('_markers'), ctx.send_markers)
601
+ ctx.send_node(named_variable, attrgetter('_name'), ctx.send_tree)
602
+ ctx.send_nodes(named_variable, attrgetter('_dimensions_after_name'), JavaSender.send_left_padded, lambda t: t)
603
+ ctx.send_node(named_variable, attrgetter('_initializer'), JavaSender.send_left_padded)
604
+ ctx.send_typed_value(named_variable, attrgetter('_variable_type'))
605
+ return named_variable
606
+
607
+ def visit_while_loop(self, while_loop: WhileLoop, ctx: SenderContext) -> J:
608
+ ctx.send_value(while_loop, attrgetter('_id'))
609
+ ctx.send_node(while_loop, attrgetter('_prefix'), JavaSender.send_space)
610
+ ctx.send_node(while_loop, attrgetter('_markers'), ctx.send_markers)
611
+ ctx.send_node(while_loop, attrgetter('_condition'), ctx.send_tree)
612
+ ctx.send_node(while_loop, attrgetter('_body'), JavaSender.send_right_padded)
613
+ return while_loop
614
+
615
+ def visit_wildcard(self, wildcard: Wildcard, ctx: SenderContext) -> J:
616
+ ctx.send_value(wildcard, attrgetter('_id'))
617
+ ctx.send_node(wildcard, attrgetter('_prefix'), JavaSender.send_space)
618
+ ctx.send_node(wildcard, attrgetter('_markers'), ctx.send_markers)
619
+ ctx.send_node(wildcard, attrgetter('_bound'), JavaSender.send_left_padded)
620
+ ctx.send_node(wildcard, attrgetter('_bounded_type'), ctx.send_tree)
621
+ return wildcard
622
+
623
+ def visit_yield(self, yield_: Yield, ctx: SenderContext) -> J:
624
+ ctx.send_value(yield_, attrgetter('_id'))
625
+ ctx.send_node(yield_, attrgetter('_prefix'), JavaSender.send_space)
626
+ ctx.send_node(yield_, attrgetter('_markers'), ctx.send_markers)
627
+ ctx.send_value(yield_, attrgetter('_implicit'))
628
+ ctx.send_node(yield_, attrgetter('_value'), ctx.send_tree)
629
+ return yield_
630
+
631
+ def visit_unknown(self, unknown: Unknown, ctx: SenderContext) -> J:
632
+ ctx.send_value(unknown, attrgetter('_id'))
633
+ ctx.send_node(unknown, attrgetter('_prefix'), JavaSender.send_space)
634
+ ctx.send_node(unknown, attrgetter('_markers'), ctx.send_markers)
635
+ ctx.send_node(unknown, attrgetter('_source'), ctx.send_tree)
636
+ return unknown
637
+
638
+ def visit_unknown_source(self, source: Unknown.Source, ctx: SenderContext) -> J:
639
+ ctx.send_value(source, attrgetter('_id'))
640
+ ctx.send_node(source, attrgetter('_prefix'), JavaSender.send_space)
641
+ ctx.send_node(source, attrgetter('_markers'), ctx.send_markers)
642
+ ctx.send_value(source, attrgetter('_text'))
643
+ return source
644
+
645
+ @classmethod
646
+ def send_container(cls, container: JContainer[T], ctx: SenderContext):
647
+ extensions.send_container(container, ctx)
648
+
649
+ @classmethod
650
+ def send_left_padded(cls, left_padded: JLeftPadded[T], ctx: SenderContext):
651
+ extensions.send_left_padded(left_padded, ctx)
652
+
653
+ @classmethod
654
+ def send_right_padded(cls, right_padded: JRightPadded[T], ctx: SenderContext):
655
+ extensions.send_right_padded(right_padded, ctx)
656
+
657
+ @classmethod
658
+ def send_space(cls, space: Space, ctx: SenderContext):
659
+ extensions.send_space(space, ctx)