jaclang 0.2.5__py3-none-any.whl → 0.3.1__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.
Potentially problematic release.
This version of jaclang might be problematic. Click here for more details.
- jaclang/__init__.py +3 -3
- jaclang/cli/__init__.py +0 -1
- jaclang/cli/__jac_gen__/cli.py +4 -4
- jaclang/cli/__jac_gen__/cmds.py +1 -1
- jaclang/cli/__jac_gen__/cmds_impl.py +1 -1
- jaclang/core/__init__.py +5 -11
- jaclang/core/__jac_gen__/corelib.py +289 -0
- jaclang/core/__jac_gen__/corelib_impl.py +220 -0
- jaclang/core/corelib.jac +21 -34
- jaclang/core/corelib_impl.jac +317 -0
- jaclang/jac/__init__.py +1 -0
- jaclang/jac/__jac_gen__/jac_parser.py +2 -2
- jaclang/jac/absyntree.py +28 -8
- jaclang/jac/constant.py +3 -7
- jaclang/jac/parser.py +13 -9
- jaclang/jac/passes/main/__init__.py +2 -0
- jaclang/jac/passes/main/def_use_pass.py +3 -2
- jaclang/jac/passes/main/pyast_gen_pass.py +99 -34
- jaclang/jac/passes/main/schedules.py +6 -0
- jaclang/jac/passes/main/sym_tab_build_pass.py +3 -5
- jaclang/jac/passes/main/tests/test_jac_format_pass.py +22 -4
- jaclang/jac/passes/main/tests/test_type_check_pass.py +42 -0
- jaclang/jac/passes/main/type_check_pass.py +103 -0
- jaclang/jac/passes/tool/fuse_comments_pass.py +57 -39
- jaclang/jac/passes/tool/jac_formatter_pass.py +419 -192
- jaclang/jac/passes/transform.py +0 -39
- jaclang/jac/passes/utils/__init__.py +1 -0
- jaclang/jac/passes/utils/mypy_ast_build.py +302 -0
- jaclang/jac/plugin/__init__.py +5 -2
- jaclang/jac/plugin/default.py +20 -4
- jaclang/jac/plugin/feature.py +15 -6
- jaclang/jac/plugin/spec.py +34 -6
- jaclang/jac/tests/test_workspace.py +45 -5
- jaclang/jac/transpiler.py +4 -9
- jaclang/utils/helpers.py +0 -33
- jaclang/utils/lang_tools.py +3 -0
- jaclang/utils/test.py +3 -1
- jaclang/vendor/lark/py.typed +0 -0
- jaclang/vendor/mypy/checker.py +19 -12
- jaclang/vendor/mypy/checkexpr.py +31 -10
- jaclang/vendor/mypy/constraints.py +56 -38
- jaclang/vendor/mypy/expandtype.py +1 -0
- jaclang/vendor/mypy/meet.py +10 -1
- jaclang/vendor/mypy/messages.py +16 -4
- jaclang/vendor/mypy/moduleinspect.py +10 -4
- jaclang/vendor/mypy/py.typed +1 -0
- jaclang/vendor/mypy/semanal.py +18 -17
- jaclang/vendor/mypy/semanal_enum.py +7 -4
- jaclang/vendor/mypy/semanal_namedtuple.py +11 -1
- jaclang/vendor/mypy/semanal_typeddict.py +25 -11
- jaclang/vendor/mypy/stubdoc.py +18 -4
- jaclang/vendor/mypy/stubgen.py +80 -1
- jaclang/vendor/mypy/stubgenc.py +47 -5
- jaclang/vendor/mypy/stubtest.py +53 -3
- jaclang/vendor/mypy/stubutil.py +9 -9
- jaclang/vendor/mypy/test/testipc.py +16 -7
- jaclang/vendor/mypy/test/teststubtest.py +20 -2
- jaclang/vendor/mypy/types.py +1 -1
- jaclang/vendor/mypyc/irbuild/prebuildvisitor.py +2 -1
- jaclang/vendor/mypyc/test/test_run.py +2 -4
- jaclang/vendor/pluggy/py.typed +0 -0
- {jaclang-0.2.5.dist-info → jaclang-0.3.1.dist-info}/METADATA +1 -1
- {jaclang-0.2.5.dist-info → jaclang-0.3.1.dist-info}/RECORD +67 -62
- {jaclang-0.2.5.dist-info → jaclang-0.3.1.dist-info}/WHEEL +1 -1
- {jaclang-0.2.5.dist-info → jaclang-0.3.1.dist-info}/entry_points.txt +3 -0
- jaclang/core/arch_impl.jac +0 -131
- jaclang/core/element_impl.jac +0 -109
- jaclang/core/exec_ctx_impl.jac +0 -14
- jaclang/core/memory_impl.jac +0 -57
- jaclang/jac/tests/fixtures/__jac_gen__/hello_world.py +0 -5
- /jaclang/{jac/tests/fixtures → core}/__jac_gen__/__init__.py +0 -0
- {jaclang-0.2.5.dist-info → jaclang-0.3.1.dist-info}/top_level.txt +0 -0
|
@@ -16,7 +16,6 @@ class JacFormatPass(Pass):
|
|
|
16
16
|
self.comments: list[ast.CommentToken] = []
|
|
17
17
|
self.indent_size = 4
|
|
18
18
|
self.indent_level = 0
|
|
19
|
-
self.prev_brac = False
|
|
20
19
|
|
|
21
20
|
def indent_str(self) -> str:
|
|
22
21
|
"""Return string for indent."""
|
|
@@ -75,9 +74,19 @@ class JacFormatPass(Pass):
|
|
|
75
74
|
body: Sequence[ElementStmt],
|
|
76
75
|
is_imported: bool,
|
|
77
76
|
"""
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
for i in node.kid:
|
|
78
|
+
if isinstance(i, ast.String):
|
|
79
|
+
self.emit_ln(node, f" {i.gen.jac}")
|
|
80
|
+
elif isinstance(i, ast.CommentToken):
|
|
81
|
+
if i.is_inline:
|
|
82
|
+
self.emit(node, f" {i.gen.jac}")
|
|
83
|
+
else:
|
|
84
|
+
self.emit_ln(node, i.gen.jac)
|
|
85
|
+
elif isinstance(i, ast.Token):
|
|
86
|
+
self.emit(node, i.value.strip("") + " ")
|
|
87
|
+
elif isinstance(i, ast.SubTag):
|
|
88
|
+
for j in i.kid:
|
|
89
|
+
self.emit(node, j.gen.jac)
|
|
81
90
|
for i in node.body:
|
|
82
91
|
self.emit_ln(node, i.gen.jac)
|
|
83
92
|
self.emit_ln(node, "")
|
|
@@ -90,11 +99,14 @@ class JacFormatPass(Pass):
|
|
|
90
99
|
is_frozen: bool,
|
|
91
100
|
doc: Optional[String] = None,
|
|
92
101
|
"""
|
|
93
|
-
if node.doc:
|
|
94
|
-
self.emit_ln(node, node.doc.value)
|
|
95
102
|
for i in node.kid:
|
|
96
103
|
if isinstance(i, ast.String):
|
|
97
|
-
|
|
104
|
+
self.emit_ln(node, f" {i.gen.jac}")
|
|
105
|
+
elif isinstance(i, ast.CommentToken):
|
|
106
|
+
if i.is_inline:
|
|
107
|
+
self.emit(node, f" {i.gen.jac}")
|
|
108
|
+
else:
|
|
109
|
+
self.emit_ln(node, i.gen.jac)
|
|
98
110
|
elif isinstance(i, ast.Token):
|
|
99
111
|
if i.name == "SEMI":
|
|
100
112
|
self.emit_ln(node, i.value + " ")
|
|
@@ -111,12 +123,10 @@ class JacFormatPass(Pass):
|
|
|
111
123
|
body: SubNodeList[CodeBlockStmt],
|
|
112
124
|
doc: Optional[Constant] = None,
|
|
113
125
|
"""
|
|
114
|
-
if node.doc:
|
|
115
|
-
self.emit_ln(node, node.doc.value)
|
|
116
126
|
for i in node.kid:
|
|
117
127
|
if isinstance(i, ast.String):
|
|
118
|
-
|
|
119
|
-
|
|
128
|
+
self.emit_ln(node, f"{i.gen.jac}")
|
|
129
|
+
elif isinstance(i, ast.Token):
|
|
120
130
|
self.emit(node, i.value.strip("") + " ")
|
|
121
131
|
elif isinstance(i, ast.SubTag):
|
|
122
132
|
for j in i.kid:
|
|
@@ -129,58 +139,62 @@ class JacFormatPass(Pass):
|
|
|
129
139
|
|
|
130
140
|
items: list[T],
|
|
131
141
|
"""
|
|
132
|
-
|
|
133
|
-
for stmt in node.kid:
|
|
142
|
+
prev_token = None
|
|
143
|
+
for i, stmt in enumerate(node.kid):
|
|
144
|
+
if isinstance(node.parent, (ast.EnumDef, ast.Enum)) and stmt.gen.jac == ",":
|
|
145
|
+
self.indent_level -= 1
|
|
146
|
+
self.emit_ln(node, f"{stmt.gen.jac}")
|
|
147
|
+
self.indent_level += 1
|
|
148
|
+
continue
|
|
134
149
|
if isinstance(stmt, ast.Token):
|
|
135
150
|
if stmt.name == "LBRACE":
|
|
136
151
|
if (
|
|
137
|
-
|
|
138
|
-
and
|
|
139
|
-
and node.kid[count + 1].is_inline
|
|
152
|
+
isinstance(node.kid[i + 1], ast.CommentToken)
|
|
153
|
+
and node.kid[i + 1].is_inline
|
|
140
154
|
):
|
|
141
|
-
self.emit(node, f"{stmt.value}")
|
|
155
|
+
self.emit(node, f" {stmt.value}")
|
|
142
156
|
else:
|
|
143
|
-
self.emit_ln(node, f" {stmt.value}")
|
|
157
|
+
self.emit_ln(node, f" {stmt.value} ")
|
|
144
158
|
self.indent_level += 1
|
|
145
|
-
count += 1
|
|
146
159
|
elif stmt.name == "RBRACE":
|
|
147
160
|
self.indent_level -= 1
|
|
148
|
-
if (
|
|
149
|
-
isinstance(stmt.parent.parent, (ast.ElseIf, ast.IfStmt))
|
|
150
|
-
and not self.prev_brac
|
|
151
|
-
):
|
|
161
|
+
if isinstance(stmt.parent.parent, (ast.ElseIf, ast.IfStmt)):
|
|
152
162
|
self.emit(node, f"{stmt.value}")
|
|
153
|
-
self.prev_brac = True
|
|
154
163
|
|
|
155
164
|
else:
|
|
156
|
-
if (
|
|
157
|
-
|
|
158
|
-
and
|
|
159
|
-
and node.kid[count + 1].is_inline
|
|
165
|
+
if i < (len(node.kid) - 1) and (
|
|
166
|
+
isinstance(node.kid[i + 1], ast.CommentToken)
|
|
167
|
+
and node.kid[i + 1].is_inline
|
|
160
168
|
):
|
|
161
|
-
self.emit(node, f"{stmt.value
|
|
162
|
-
|
|
169
|
+
self.emit(node, f" {stmt.value}")
|
|
170
|
+
elif not (node.gen.jac).endswith("\n"):
|
|
171
|
+
self.emit_ln(node, "")
|
|
172
|
+
self.emit_ln(node, f"{stmt.value}")
|
|
163
173
|
else:
|
|
164
174
|
self.emit_ln(node, f"{stmt.value}")
|
|
165
|
-
self.prev_brac = False
|
|
166
|
-
count += 1
|
|
167
175
|
elif isinstance(stmt, ast.CommentToken):
|
|
168
|
-
|
|
176
|
+
if stmt.is_inline:
|
|
177
|
+
if isinstance(prev_token, ast.Semi) or prev_token.name in [
|
|
178
|
+
"LBRACE",
|
|
179
|
+
"RBRACE",
|
|
180
|
+
]:
|
|
181
|
+
self.indent_level -= 1
|
|
182
|
+
self.emit(node, f" {stmt.gen.jac}")
|
|
183
|
+
self.emit_ln(node, "")
|
|
184
|
+
self.indent_level += 1
|
|
185
|
+
else:
|
|
186
|
+
self.emit(node, f"{stmt.gen.jac}")
|
|
187
|
+
else:
|
|
188
|
+
self.emit_ln(node, "")
|
|
189
|
+
self.emit_ln(node, stmt.gen.jac)
|
|
169
190
|
else:
|
|
170
191
|
self.emit(node, f"{stmt.value}")
|
|
171
|
-
count += 1
|
|
172
192
|
continue
|
|
173
|
-
elif isinstance(stmt, ast.Assignment):
|
|
174
|
-
self.emit(node, f"{stmt.gen.jac}")
|
|
175
|
-
count += 1
|
|
193
|
+
elif isinstance(stmt, (ast.Assignment, ast.Semi)):
|
|
194
|
+
self.emit(node, f"{stmt.gen.jac} ")
|
|
176
195
|
else:
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
count += 1
|
|
180
|
-
else:
|
|
181
|
-
self.emit(node, f"{stmt.gen.jac}")
|
|
182
|
-
count += 1
|
|
183
|
-
continue
|
|
196
|
+
self.emit(node, f"{stmt.gen.jac}")
|
|
197
|
+
prev_token = stmt
|
|
184
198
|
|
|
185
199
|
def exit_sub_tag(self, node: ast.SubTag) -> None:
|
|
186
200
|
"""Sub objects.
|
|
@@ -196,12 +210,12 @@ class JacFormatPass(Pass):
|
|
|
196
210
|
target: AtomType,
|
|
197
211
|
params: Optional[ParamList],
|
|
198
212
|
"""
|
|
199
|
-
# node.print()
|
|
200
213
|
for i in node.kid:
|
|
201
214
|
if isinstance(i, ast.CommentToken):
|
|
202
215
|
if i.is_inline:
|
|
203
216
|
self.emit(node, f" {i.gen.jac}")
|
|
204
217
|
else:
|
|
218
|
+
self.emit_ln(node, "")
|
|
205
219
|
self.emit_ln(node, i.gen.jac)
|
|
206
220
|
else:
|
|
207
221
|
self.emit(node, i.gen.jac)
|
|
@@ -302,7 +316,7 @@ class JacFormatPass(Pass):
|
|
|
302
316
|
else:
|
|
303
317
|
self.emit_ln(node, i.gen.jac)
|
|
304
318
|
elif isinstance(i, ast.Semi):
|
|
305
|
-
self.emit(node, f"{i.gen.jac}")
|
|
319
|
+
self.emit(node, f"{i.gen.jac} ")
|
|
306
320
|
else:
|
|
307
321
|
if start:
|
|
308
322
|
self.emit(node, f"{i.gen.jac}")
|
|
@@ -323,24 +337,30 @@ class JacFormatPass(Pass):
|
|
|
323
337
|
doc: Optional[Constant] = None,
|
|
324
338
|
sub_module: Optional[Module] = None,
|
|
325
339
|
"""
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
node,
|
|
336
|
-
|
|
337
|
-
)
|
|
340
|
+
start = True
|
|
341
|
+
for i in node.kid:
|
|
342
|
+
if isinstance(i, ast.CommentToken):
|
|
343
|
+
if i.is_inline:
|
|
344
|
+
self.emit(node, f" {i.gen.jac}")
|
|
345
|
+
elif not node.gen.jac.endswith("\n"):
|
|
346
|
+
self.emit_ln(node, "")
|
|
347
|
+
self.emit_ln(node, i.gen.jac)
|
|
348
|
+
else:
|
|
349
|
+
self.emit_ln(node, i.gen.jac)
|
|
350
|
+
elif isinstance(i, ast.Semi):
|
|
351
|
+
self.emit(node, f"{i.gen.jac} ")
|
|
352
|
+
elif i.gen.jac.startswith(":"):
|
|
353
|
+
self.emit(node, f"{i.gen.jac}")
|
|
338
354
|
else:
|
|
339
|
-
|
|
340
|
-
node,
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
355
|
+
if start:
|
|
356
|
+
self.emit(node, f"{i.gen.jac}")
|
|
357
|
+
start = False
|
|
358
|
+
elif i.gen.jac == ",":
|
|
359
|
+
self.emit(node, f"{i.gen.jac} ")
|
|
360
|
+
else:
|
|
361
|
+
self.emit(node, f" {i.gen.jac}")
|
|
362
|
+
if isinstance(node.kid[-1], (ast.Semi)) and not node.gen.jac.endswith("\n"):
|
|
363
|
+
self.emit_ln(node, "")
|
|
344
364
|
|
|
345
365
|
def exit_arch_def(self, node: ast.ArchDef) -> None:
|
|
346
366
|
"""Sub objects.
|
|
@@ -370,17 +390,20 @@ class JacFormatPass(Pass):
|
|
|
370
390
|
doc: Optional[Constant] = None,
|
|
371
391
|
decorators: Optional[SubNodeList[ExprType]] = None,
|
|
372
392
|
"""
|
|
373
|
-
if node.doc:
|
|
374
|
-
self.emit_ln(node, node.doc.gen.jac)
|
|
375
393
|
start = True
|
|
394
|
+
prev_token = None
|
|
376
395
|
for i in node.kid:
|
|
377
|
-
if isinstance(i, ast.
|
|
396
|
+
if isinstance(i, ast.String):
|
|
397
|
+
self.emit_ln(node, f"{i.gen.jac}")
|
|
398
|
+
elif isinstance(i, ast.CommentToken):
|
|
378
399
|
if i.is_inline:
|
|
379
400
|
self.emit(node, f" {i.gen.jac}")
|
|
401
|
+
if isinstance(prev_token, ast.Semi):
|
|
402
|
+
self.emit_ln(node, "")
|
|
380
403
|
else:
|
|
381
404
|
self.emit_ln(node, i.gen.jac)
|
|
382
405
|
elif isinstance(i, ast.Semi):
|
|
383
|
-
self.emit(node, f"{i.gen.jac}")
|
|
406
|
+
self.emit(node, f"{i.gen.jac} ")
|
|
384
407
|
elif isinstance(i, ast.SubNodeList) and i.gen.jac.startswith("@"):
|
|
385
408
|
self.emit_ln(node, i.gen.jac)
|
|
386
409
|
else:
|
|
@@ -389,7 +412,8 @@ class JacFormatPass(Pass):
|
|
|
389
412
|
start = False
|
|
390
413
|
else:
|
|
391
414
|
self.emit(node, f" {i.gen.jac}")
|
|
392
|
-
|
|
415
|
+
prev_token = i
|
|
416
|
+
if isinstance(node.kid[-1], (ast.Semi)):
|
|
393
417
|
self.emit_ln(node, "")
|
|
394
418
|
|
|
395
419
|
def exit_func_signature(self, node: ast.FuncSignature) -> None:
|
|
@@ -457,36 +481,26 @@ class JacFormatPass(Pass):
|
|
|
457
481
|
base_classes: BaseClasses,
|
|
458
482
|
body: Optional[EnumBlock],
|
|
459
483
|
"""
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
f"enum {node.name.gen.jac}({node.base_classes.gen.jac})", # noqa
|
|
468
|
-
)
|
|
469
|
-
else:
|
|
470
|
-
self.emit(node, f"enum {node.name.value}")
|
|
471
|
-
if node.body:
|
|
472
|
-
for stmt in node.body.kid:
|
|
473
|
-
if isinstance(stmt, ast.Token):
|
|
474
|
-
if stmt.name == "LBRACE":
|
|
475
|
-
self.emit_ln(node, f" {stmt.value}")
|
|
476
|
-
self.indent_level += 1
|
|
477
|
-
elif stmt.name == "RBRACE":
|
|
478
|
-
self.emit_ln(node, "")
|
|
479
|
-
self.indent_level -= 1
|
|
480
|
-
self.emit_ln(node, f"{stmt.value}")
|
|
481
|
-
# self.emit_ln(node, "")
|
|
482
|
-
else:
|
|
483
|
-
self.indent_level -= 1
|
|
484
|
-
self.emit_ln(node, f"{stmt.value}")
|
|
485
|
-
self.indent_level += 1
|
|
484
|
+
start = True
|
|
485
|
+
for i in node.kid:
|
|
486
|
+
if isinstance(i, ast.String):
|
|
487
|
+
self.emit(node, f"{i.gen.jac}")
|
|
488
|
+
elif isinstance(i, ast.CommentToken):
|
|
489
|
+
if i.is_inline:
|
|
490
|
+
self.emit(node, f" {i.gen.jac}")
|
|
486
491
|
else:
|
|
487
|
-
self.
|
|
488
|
-
|
|
489
|
-
|
|
492
|
+
self.emit_ln(node, i.gen.jac)
|
|
493
|
+
elif isinstance(i, ast.Semi):
|
|
494
|
+
self.emit(node, f"{i.gen.jac} ")
|
|
495
|
+
elif isinstance(i, ast.SubNodeList) and i.gen.jac.startswith("@"):
|
|
496
|
+
self.emit_ln(node, i.gen.jac)
|
|
497
|
+
else:
|
|
498
|
+
if start:
|
|
499
|
+
self.emit(node, f"{i.gen.jac}")
|
|
500
|
+
start = False
|
|
501
|
+
else:
|
|
502
|
+
self.emit(node, f" {i.gen.jac}")
|
|
503
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
490
504
|
self.emit_ln(node, "")
|
|
491
505
|
|
|
492
506
|
def exit_enum_def(self, node: ast.EnumDef) -> None:
|
|
@@ -620,7 +634,7 @@ class JacFormatPass(Pass):
|
|
|
620
634
|
else:
|
|
621
635
|
self.emit_ln(node, i.gen.jac)
|
|
622
636
|
elif isinstance(i, ast.Semi):
|
|
623
|
-
self.emit(node, f"{i.gen.jac}")
|
|
637
|
+
self.emit(node, f"{i.gen.jac} ")
|
|
624
638
|
else:
|
|
625
639
|
if start:
|
|
626
640
|
self.emit(node, f"{i.gen.jac}")
|
|
@@ -635,11 +649,21 @@ class JacFormatPass(Pass):
|
|
|
635
649
|
|
|
636
650
|
elseifs: list[IfStmt],
|
|
637
651
|
"""
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
652
|
+
start = True
|
|
653
|
+
for i in node.kid:
|
|
654
|
+
if isinstance(i, ast.CommentToken):
|
|
655
|
+
if i.is_inline:
|
|
656
|
+
self.emit(node, f" {i.gen.jac}")
|
|
657
|
+
else:
|
|
658
|
+
self.emit_ln(node, i.gen.jac)
|
|
659
|
+
elif isinstance(i, ast.Semi):
|
|
660
|
+
self.emit(node, f"{i.gen.jac} ")
|
|
661
|
+
else:
|
|
662
|
+
if start:
|
|
663
|
+
self.emit(node, f"{i.gen.jac}")
|
|
664
|
+
start = False
|
|
665
|
+
else:
|
|
666
|
+
self.emit(node, f" {i.gen.jac}")
|
|
643
667
|
|
|
644
668
|
def exit_disengage_stmt(self, node: ast.DisengageStmt) -> None:
|
|
645
669
|
"""Sub objects."""
|
|
@@ -652,8 +676,21 @@ class JacFormatPass(Pass):
|
|
|
652
676
|
|
|
653
677
|
body: CodeBlock,
|
|
654
678
|
"""
|
|
655
|
-
|
|
656
|
-
|
|
679
|
+
start = True
|
|
680
|
+
for i in node.kid:
|
|
681
|
+
if isinstance(i, ast.CommentToken):
|
|
682
|
+
if i.is_inline:
|
|
683
|
+
self.emit(node, f" {i.gen.jac}")
|
|
684
|
+
else:
|
|
685
|
+
self.emit_ln(node, i.gen.jac)
|
|
686
|
+
elif isinstance(i, ast.Semi):
|
|
687
|
+
self.emit(node, f"{i.gen.jac}")
|
|
688
|
+
else:
|
|
689
|
+
if start:
|
|
690
|
+
self.emit(node, f"{i.gen.jac}")
|
|
691
|
+
start = False
|
|
692
|
+
else:
|
|
693
|
+
self.emit(node, f" {i.gen.jac}")
|
|
657
694
|
|
|
658
695
|
def exit_expr_stmt(self, node: ast.ExprStmt) -> None:
|
|
659
696
|
"""Sub objects.
|
|
@@ -666,6 +703,7 @@ class JacFormatPass(Pass):
|
|
|
666
703
|
if i.is_inline:
|
|
667
704
|
self.emit(node, f" {i.gen.jac}")
|
|
668
705
|
else:
|
|
706
|
+
self.emit_ln(node, "")
|
|
669
707
|
self.emit_ln(node, i.gen.jac)
|
|
670
708
|
elif isinstance(i, ast.Semi):
|
|
671
709
|
self.emit(node, f"{i.gen.jac}")
|
|
@@ -769,9 +807,18 @@ class JacFormatPass(Pass):
|
|
|
769
807
|
|
|
770
808
|
target: SubNodeList[NameType],
|
|
771
809
|
"""
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
810
|
+
for i in node.kid:
|
|
811
|
+
if isinstance(i, ast.CommentToken):
|
|
812
|
+
if i.is_inline:
|
|
813
|
+
self.emit(node, f" {i.gen.jac}")
|
|
814
|
+
else:
|
|
815
|
+
self.emit_ln(node, i.gen.jac)
|
|
816
|
+
elif isinstance(i, ast.Semi):
|
|
817
|
+
self.emit_ln(node, i.gen.jac)
|
|
818
|
+
else:
|
|
819
|
+
self.emit(node, i.gen.jac)
|
|
820
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
821
|
+
self.emit_ln(node, "")
|
|
775
822
|
|
|
776
823
|
def exit_non_local_stmt(self, node: ast.GlobalStmt) -> None:
|
|
777
824
|
"""Sub objects.
|
|
@@ -815,28 +862,27 @@ class JacFormatPass(Pass):
|
|
|
815
862
|
doc: Optional[Constant] = None,
|
|
816
863
|
decorators: Optional[SubNodeList[ExprType]] = None,
|
|
817
864
|
"""
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
)
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
self.
|
|
839
|
-
self.emit_ln(node, "")
|
|
865
|
+
start = True
|
|
866
|
+
for i in node.kid:
|
|
867
|
+
if isinstance(i, ast.String):
|
|
868
|
+
self.emit_ln(node, f"{i.gen.jac}")
|
|
869
|
+
elif isinstance(i, ast.CommentToken):
|
|
870
|
+
if i.is_inline:
|
|
871
|
+
self.emit(node, f" {i.gen.jac}")
|
|
872
|
+
else:
|
|
873
|
+
self.emit_ln(node, i.gen.jac)
|
|
874
|
+
elif isinstance(i, ast.Semi):
|
|
875
|
+
self.emit(node, f"{i.gen.jac} ")
|
|
876
|
+
elif isinstance(i, ast.SubNodeList) and i.gen.jac.startswith("@"):
|
|
877
|
+
self.emit_ln(node, i.gen.jac)
|
|
878
|
+
else:
|
|
879
|
+
if start or i.gen.jac.startswith(":"):
|
|
880
|
+
self.emit(node, f"{i.gen.jac}")
|
|
881
|
+
start = False
|
|
882
|
+
else:
|
|
883
|
+
self.emit(node, f" {i.gen.jac}")
|
|
884
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
885
|
+
self.emit_ln(node, "")
|
|
840
886
|
|
|
841
887
|
def exit_f_string(self, node: ast.FString) -> None:
|
|
842
888
|
"""Sub objects.
|
|
@@ -911,10 +957,23 @@ class JacFormatPass(Pass):
|
|
|
911
957
|
|
|
912
958
|
cause: Optional[ExprType],
|
|
913
959
|
"""
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
960
|
+
start = True
|
|
961
|
+
for i in node.kid:
|
|
962
|
+
if isinstance(i, ast.CommentToken):
|
|
963
|
+
if i.is_inline:
|
|
964
|
+
self.emit(node, f" {i.gen.jac}")
|
|
965
|
+
else:
|
|
966
|
+
self.emit_ln(node, i.gen.jac)
|
|
967
|
+
elif isinstance(i, ast.Semi):
|
|
968
|
+
self.emit(node, f"{i.gen.jac}")
|
|
969
|
+
else:
|
|
970
|
+
if start:
|
|
971
|
+
self.emit(node, f"{i.gen.jac}")
|
|
972
|
+
start = False
|
|
973
|
+
else:
|
|
974
|
+
self.emit(node, f" {i.gen.jac}")
|
|
975
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
976
|
+
self.emit_ln(node, "")
|
|
918
977
|
|
|
919
978
|
def exit_edge_op_ref(self, node: ast.EdgeOpRef) -> None:
|
|
920
979
|
"""Sub objects.
|
|
@@ -1145,16 +1204,23 @@ class JacFormatPass(Pass):
|
|
|
1145
1204
|
condition: ExprType,
|
|
1146
1205
|
error_msg: Optional[ExprType],
|
|
1147
1206
|
"""
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1207
|
+
start = True
|
|
1208
|
+
for i in node.kid:
|
|
1209
|
+
if isinstance(i, ast.CommentToken):
|
|
1210
|
+
if i.is_inline:
|
|
1211
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1212
|
+
else:
|
|
1213
|
+
self.emit_ln(node, i.gen.jac)
|
|
1214
|
+
elif isinstance(i, ast.Semi):
|
|
1215
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1216
|
+
else:
|
|
1217
|
+
if start:
|
|
1218
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1219
|
+
start = False
|
|
1220
|
+
else:
|
|
1221
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1222
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
1223
|
+
self.emit_ln(node, "")
|
|
1158
1224
|
|
|
1159
1225
|
def exit_ctrl_stmt(self, node: ast.CtrlStmt) -> None:
|
|
1160
1226
|
"""Sub objects.
|
|
@@ -1254,16 +1320,27 @@ class JacFormatPass(Pass):
|
|
|
1254
1320
|
doc: Optional[Token],
|
|
1255
1321
|
body: CodeBlock,
|
|
1256
1322
|
"""
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1323
|
+
start = True
|
|
1324
|
+
for i in node.kid:
|
|
1325
|
+
if isinstance(i, ast.CommentToken):
|
|
1326
|
+
if i.is_inline:
|
|
1327
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1328
|
+
else:
|
|
1329
|
+
self.emit_ln(node, "")
|
|
1330
|
+
self.emit_ln(node, i.gen.jac)
|
|
1331
|
+
elif isinstance(i, ast.Semi):
|
|
1332
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1333
|
+
elif isinstance(i, ast.Name):
|
|
1334
|
+
if not i.value.startswith("test"):
|
|
1335
|
+
self.emit(node, f" {i.value} ")
|
|
1336
|
+
else:
|
|
1337
|
+
if start:
|
|
1338
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1339
|
+
start = False
|
|
1340
|
+
else:
|
|
1341
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1342
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
1343
|
+
self.emit_ln(node, "")
|
|
1267
1344
|
|
|
1268
1345
|
def exit_py_inline_code(self, node: ast.PyInlineCode) -> None:
|
|
1269
1346
|
"""Sub objects.
|
|
@@ -1277,14 +1354,21 @@ class JacFormatPass(Pass):
|
|
|
1277
1354
|
|
|
1278
1355
|
archs: list[ArchRef],
|
|
1279
1356
|
"""
|
|
1357
|
+
start = True
|
|
1280
1358
|
for i in node.kid:
|
|
1281
1359
|
if isinstance(i, ast.CommentToken):
|
|
1282
1360
|
if i.is_inline:
|
|
1283
1361
|
self.emit(node, f" {i.gen.jac}")
|
|
1284
1362
|
else:
|
|
1285
1363
|
self.emit_ln(node, i.gen.jac)
|
|
1364
|
+
elif isinstance(i, ast.Semi):
|
|
1365
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1286
1366
|
else:
|
|
1287
|
-
|
|
1367
|
+
if start:
|
|
1368
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1369
|
+
start = False
|
|
1370
|
+
else:
|
|
1371
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1288
1372
|
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
1289
1373
|
self.emit_ln(node, "")
|
|
1290
1374
|
|
|
@@ -1301,12 +1385,24 @@ class JacFormatPass(Pass):
|
|
|
1301
1385
|
target: ExprType
|
|
1302
1386
|
cases: list[MatchCase],
|
|
1303
1387
|
"""
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1388
|
+
start = True
|
|
1389
|
+
for i in node.kid:
|
|
1390
|
+
if isinstance(i, ast.CommentToken):
|
|
1391
|
+
if i.is_inline:
|
|
1392
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1393
|
+
else:
|
|
1394
|
+
self.emit_ln(node, "")
|
|
1395
|
+
self.emit_ln(node, i.gen.jac)
|
|
1396
|
+
elif isinstance(i, ast.Semi):
|
|
1397
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1398
|
+
else:
|
|
1399
|
+
if start:
|
|
1400
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1401
|
+
start = False
|
|
1402
|
+
else:
|
|
1403
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1404
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
1405
|
+
self.emit_ln(node, "")
|
|
1310
1406
|
|
|
1311
1407
|
def exit_match_case(self, node: ast.MatchCase) -> None:
|
|
1312
1408
|
"""Sub objects.
|
|
@@ -1315,24 +1411,53 @@ class JacFormatPass(Pass):
|
|
|
1315
1411
|
guard: Optional[ExprType],
|
|
1316
1412
|
body: SubNodeList[CodeBlockStmt],
|
|
1317
1413
|
"""
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1414
|
+
start = True
|
|
1415
|
+
for i in node.kid:
|
|
1416
|
+
if isinstance(i, ast.CommentToken):
|
|
1417
|
+
if i.is_inline:
|
|
1418
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1419
|
+
else:
|
|
1420
|
+
self.emit_ln(node, "")
|
|
1421
|
+
self.emit_ln(node, i.gen.jac)
|
|
1422
|
+
elif isinstance(i, ast.Semi):
|
|
1423
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1424
|
+
elif isinstance(i, ast.Token) and i.value == ":":
|
|
1425
|
+
self.emit_ln(node, f"{i.gen.jac}")
|
|
1426
|
+
elif isinstance(i, ast.SubNodeList):
|
|
1427
|
+
self.indent_level += 1
|
|
1428
|
+
self.emit_ln(node, f"{i.gen.jac}")
|
|
1429
|
+
self.indent_level -= 1
|
|
1430
|
+
else:
|
|
1431
|
+
if start:
|
|
1432
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1433
|
+
start = False
|
|
1434
|
+
else:
|
|
1435
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1436
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
1437
|
+
self.emit_ln(node, "")
|
|
1329
1438
|
|
|
1330
1439
|
def exit_match_or(self, node: ast.MatchOr) -> None:
|
|
1331
1440
|
"""Sub objects.
|
|
1332
1441
|
|
|
1333
1442
|
list[MatchPattern],
|
|
1334
1443
|
"""
|
|
1335
|
-
|
|
1444
|
+
start = True
|
|
1445
|
+
for i in node.kid:
|
|
1446
|
+
if isinstance(i, ast.CommentToken):
|
|
1447
|
+
if i.is_inline:
|
|
1448
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1449
|
+
else:
|
|
1450
|
+
self.emit_ln(node, i.gen.jac)
|
|
1451
|
+
elif isinstance(i, ast.Semi):
|
|
1452
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1453
|
+
else:
|
|
1454
|
+
if start:
|
|
1455
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1456
|
+
start = False
|
|
1457
|
+
else:
|
|
1458
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1459
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
1460
|
+
self.emit_ln(node, "")
|
|
1336
1461
|
|
|
1337
1462
|
def exit_match_as(self, node: ast.MatchAs) -> None:
|
|
1338
1463
|
"""Sub objects.
|
|
@@ -1340,21 +1465,69 @@ class JacFormatPass(Pass):
|
|
|
1340
1465
|
name: NameType,
|
|
1341
1466
|
pattern: MatchPattern,
|
|
1342
1467
|
"""
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1468
|
+
start = True
|
|
1469
|
+
for i in node.kid:
|
|
1470
|
+
if isinstance(i, ast.CommentToken):
|
|
1471
|
+
if i.is_inline:
|
|
1472
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1473
|
+
else:
|
|
1474
|
+
self.emit_ln(node, "")
|
|
1475
|
+
self.emit_ln(node, i.gen.jac)
|
|
1476
|
+
elif isinstance(i, ast.Semi):
|
|
1477
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1478
|
+
else:
|
|
1479
|
+
if start:
|
|
1480
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1481
|
+
start = False
|
|
1482
|
+
else:
|
|
1483
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1484
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
1485
|
+
self.emit_ln(node, "")
|
|
1347
1486
|
|
|
1348
1487
|
def exit_match_wild(self, node: ast.MatchWild) -> None:
|
|
1349
1488
|
"""Sub objects."""
|
|
1350
|
-
|
|
1489
|
+
start = True
|
|
1490
|
+
for i in node.kid:
|
|
1491
|
+
if isinstance(i, ast.CommentToken):
|
|
1492
|
+
if i.is_inline:
|
|
1493
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1494
|
+
else:
|
|
1495
|
+
self.emit_ln(node, "")
|
|
1496
|
+
self.emit_ln(node, i.gen.jac)
|
|
1497
|
+
elif isinstance(i, ast.Semi):
|
|
1498
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1499
|
+
else:
|
|
1500
|
+
if start:
|
|
1501
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1502
|
+
start = False
|
|
1503
|
+
else:
|
|
1504
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1505
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
1506
|
+
self.emit_ln(node, "")
|
|
1351
1507
|
|
|
1352
1508
|
def exit_match_value(self, node: ast.MatchValue) -> None:
|
|
1353
1509
|
"""Sub objects.
|
|
1354
1510
|
|
|
1355
1511
|
value: ExprType,
|
|
1356
1512
|
"""
|
|
1357
|
-
|
|
1513
|
+
start = True
|
|
1514
|
+
for i in node.kid:
|
|
1515
|
+
if isinstance(i, ast.CommentToken):
|
|
1516
|
+
if i.is_inline:
|
|
1517
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1518
|
+
else:
|
|
1519
|
+
self.emit_ln(node, "")
|
|
1520
|
+
self.emit_ln(node, i.gen.jac)
|
|
1521
|
+
elif isinstance(i, ast.Semi):
|
|
1522
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1523
|
+
else:
|
|
1524
|
+
if start:
|
|
1525
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1526
|
+
start = False
|
|
1527
|
+
else:
|
|
1528
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1529
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
1530
|
+
self.emit_ln(node, "")
|
|
1358
1531
|
|
|
1359
1532
|
def exit_match_singleton(self, node: ast.MatchSingleton) -> None:
|
|
1360
1533
|
"""Sub objects.
|
|
@@ -1368,14 +1541,44 @@ class JacFormatPass(Pass):
|
|
|
1368
1541
|
|
|
1369
1542
|
values: list[MatchPattern],
|
|
1370
1543
|
"""
|
|
1371
|
-
|
|
1544
|
+
for i in node.kid:
|
|
1545
|
+
if isinstance(i, ast.CommentToken):
|
|
1546
|
+
if i.is_inline:
|
|
1547
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1548
|
+
else:
|
|
1549
|
+
self.emit_ln(node, "")
|
|
1550
|
+
self.emit_ln(node, i.gen.jac)
|
|
1551
|
+
elif isinstance(i, ast.Semi):
|
|
1552
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1553
|
+
else:
|
|
1554
|
+
if i.gen.jac == ",":
|
|
1555
|
+
self.emit(node, f"{i.gen.jac} ")
|
|
1556
|
+
else:
|
|
1557
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1558
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
1559
|
+
self.emit_ln(node, "")
|
|
1372
1560
|
|
|
1373
1561
|
def exit_match_mapping(self, node: ast.MatchMapping) -> None:
|
|
1374
1562
|
"""Sub objects.
|
|
1375
1563
|
|
|
1376
1564
|
values: list[MatchKVPair | MatchStar],
|
|
1377
1565
|
"""
|
|
1378
|
-
|
|
1566
|
+
for i in node.kid:
|
|
1567
|
+
if isinstance(i, ast.CommentToken):
|
|
1568
|
+
if i.is_inline:
|
|
1569
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1570
|
+
else:
|
|
1571
|
+
self.emit_ln(node, "")
|
|
1572
|
+
self.emit_ln(node, i.gen.jac)
|
|
1573
|
+
elif isinstance(i, ast.Semi):
|
|
1574
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1575
|
+
else:
|
|
1576
|
+
if i.gen.jac == ",":
|
|
1577
|
+
self.emit(node, f"{i.gen.jac} ")
|
|
1578
|
+
else:
|
|
1579
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1580
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
1581
|
+
self.emit_ln(node, "")
|
|
1379
1582
|
|
|
1380
1583
|
def exit_match_k_v_pair(self, node: ast.MatchKVPair) -> None:
|
|
1381
1584
|
"""Sub objects.
|
|
@@ -1383,7 +1586,24 @@ class JacFormatPass(Pass):
|
|
|
1383
1586
|
key: MatchPattern | NameType,
|
|
1384
1587
|
value: MatchPattern,
|
|
1385
1588
|
"""
|
|
1386
|
-
|
|
1589
|
+
start = True
|
|
1590
|
+
for i in node.kid:
|
|
1591
|
+
if isinstance(i, ast.CommentToken):
|
|
1592
|
+
if i.is_inline:
|
|
1593
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1594
|
+
else:
|
|
1595
|
+
self.emit_ln(node, "")
|
|
1596
|
+
self.emit_ln(node, i.gen.jac)
|
|
1597
|
+
elif isinstance(i, ast.Semi):
|
|
1598
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1599
|
+
else:
|
|
1600
|
+
if start:
|
|
1601
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1602
|
+
start = False
|
|
1603
|
+
else:
|
|
1604
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1605
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
1606
|
+
self.emit_ln(node, "")
|
|
1387
1607
|
|
|
1388
1608
|
def exit_match_star(self, node: ast.MatchStar) -> None:
|
|
1389
1609
|
"""Sub objects.
|
|
@@ -1400,16 +1620,22 @@ class JacFormatPass(Pass):
|
|
|
1400
1620
|
arg_patterns: Optional[SubNodeList[MatchPattern]],
|
|
1401
1621
|
kw_patterns: Optional[SubNodeList[MatchKVPair]],
|
|
1402
1622
|
"""
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1623
|
+
for i in node.kid:
|
|
1624
|
+
if isinstance(i, ast.CommentToken):
|
|
1625
|
+
if i.is_inline:
|
|
1626
|
+
self.emit(node, f" {i.gen.jac}")
|
|
1627
|
+
else:
|
|
1628
|
+
self.emit_ln(node, "")
|
|
1629
|
+
self.emit_ln(node, i.gen.jac)
|
|
1630
|
+
elif isinstance(i, ast.Semi):
|
|
1631
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1632
|
+
else:
|
|
1633
|
+
if i.gen.jac == ",":
|
|
1634
|
+
self.emit(node, f"{i.gen.jac} ")
|
|
1635
|
+
else:
|
|
1636
|
+
self.emit(node, f"{i.gen.jac}")
|
|
1637
|
+
if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
|
|
1638
|
+
self.emit_ln(node, "")
|
|
1413
1639
|
|
|
1414
1640
|
def exit_token(self, node: ast.Token) -> None:
|
|
1415
1641
|
"""Sub objects.
|
|
@@ -1517,4 +1743,5 @@ class JacFormatPass(Pass):
|
|
|
1517
1743
|
|
|
1518
1744
|
def exit_comment_token(self, node: ast.CommentToken) -> None:
|
|
1519
1745
|
"""Sub objects."""
|
|
1746
|
+
# print(node.is_inline)
|
|
1520
1747
|
self.emit(node, f"{node.value}")
|