jaclang 0.7.19__py3-none-any.whl → 0.7.20__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.

Files changed (91) hide show
  1. jaclang/compiler/absyntree.py +1 -1
  2. jaclang/compiler/parser.py +1 -1
  3. jaclang/compiler/passes/main/__init__.py +1 -1
  4. jaclang/compiler/passes/main/fuse_typeinfo_pass.py +50 -13
  5. jaclang/compiler/passes/main/import_pass.py +27 -0
  6. jaclang/compiler/passes/main/sym_tab_build_pass.py +0 -18
  7. jaclang/compiler/passes/main/tests/fixtures/mod_type_assign.jac +7 -0
  8. jaclang/compiler/passes/main/tests/test_type_check_pass.py +1 -1
  9. jaclang/compiler/passes/main/tests/test_typeinfo_pass.py +23 -1
  10. jaclang/compiler/passes/tool/jac_formatter_pass.py +10 -0
  11. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/line_spacing.jac +3 -1
  12. jaclang/compiler/semtable.py +4 -4
  13. jaclang/compiler/symtable.py +5 -0
  14. jaclang/langserve/engine.py +64 -6
  15. jaclang/langserve/tests/test_server.py +1 -1
  16. jaclang/langserve/utils.py +0 -113
  17. jaclang/plugin/tests/test_jaseci.py +23 -4
  18. jaclang/runtimelib/importer.py +2 -0
  19. jaclang/runtimelib/memory.py +1 -1
  20. jaclang/stubs/jaclang/__init__.pyi +5 -0
  21. jaclang/stubs/jaclang/cli/__init__.pyi +0 -0
  22. jaclang/stubs/jaclang/cli/cli.pyi +58 -0
  23. jaclang/stubs/jaclang/cli/cmdreg.pyi +32 -0
  24. jaclang/stubs/jaclang/compiler/__init__.pyi +6 -0
  25. jaclang/stubs/jaclang/compiler/absyntree.pyi +1248 -0
  26. jaclang/stubs/jaclang/compiler/codeloc.pyi +45 -0
  27. jaclang/stubs/jaclang/compiler/compile.pyi +29 -0
  28. jaclang/stubs/jaclang/compiler/constant.pyi +287 -0
  29. jaclang/stubs/jaclang/compiler/generated/__init__.pyi +0 -0
  30. jaclang/stubs/jaclang/compiler/generated/jac_parser.pyi +898 -0
  31. jaclang/stubs/jaclang/compiler/parser.pyi +266 -0
  32. jaclang/stubs/jaclang/compiler/passes/__init__.pyi +3 -0
  33. jaclang/stubs/jaclang/compiler/passes/ir_pass.pyi +40 -0
  34. jaclang/stubs/jaclang/compiler/passes/main/__init__.pyi +27 -0
  35. jaclang/stubs/jaclang/compiler/passes/main/access_modifier_pass.pyi +23 -0
  36. jaclang/stubs/jaclang/compiler/passes/main/def_impl_match_pass.pyi +12 -0
  37. jaclang/stubs/jaclang/compiler/passes/main/def_use_pass.pyi +31 -0
  38. jaclang/stubs/jaclang/compiler/passes/main/fuse_typeinfo_pass.pyi +66 -0
  39. jaclang/stubs/jaclang/compiler/passes/main/import_pass.pyi +34 -0
  40. jaclang/stubs/jaclang/compiler/passes/main/pyast_gen_pass.pyi +178 -0
  41. jaclang/stubs/jaclang/compiler/passes/main/pyast_load_pass.pyi +135 -0
  42. jaclang/stubs/jaclang/compiler/passes/main/pybc_gen_pass.pyi +6 -0
  43. jaclang/stubs/jaclang/compiler/passes/main/pyjac_ast_link_pass.pyi +22 -0
  44. jaclang/stubs/jaclang/compiler/passes/main/pyout_pass.pyi +9 -0
  45. jaclang/stubs/jaclang/compiler/passes/main/registry_pass.pyi +15 -0
  46. jaclang/stubs/jaclang/compiler/passes/main/schedules.pyi +19 -0
  47. jaclang/stubs/jaclang/compiler/passes/main/sub_node_tab_pass.pyi +6 -0
  48. jaclang/stubs/jaclang/compiler/passes/main/sym_tab_build_pass.pyi +147 -0
  49. jaclang/stubs/jaclang/compiler/passes/main/type_check_pass.pyi +11 -0
  50. jaclang/stubs/jaclang/compiler/passes/tool/__init__.pyi +4 -0
  51. jaclang/stubs/jaclang/compiler/passes/tool/fuse_comments_pass.pyi +12 -0
  52. jaclang/stubs/jaclang/compiler/passes/tool/jac_formatter_pass.pyi +134 -0
  53. jaclang/stubs/jaclang/compiler/passes/tool/schedules.pyi +11 -0
  54. jaclang/stubs/jaclang/compiler/passes/transform.pyi +28 -0
  55. jaclang/stubs/jaclang/compiler/passes/utils/__init__.pyi +0 -0
  56. jaclang/stubs/jaclang/compiler/passes/utils/mypy_ast_build.pyi +151 -0
  57. jaclang/stubs/jaclang/compiler/semtable.pyi +35 -0
  58. jaclang/stubs/jaclang/compiler/symtable.pyi +65 -0
  59. jaclang/stubs/jaclang/langserve/__init__.pyi +0 -0
  60. jaclang/stubs/jaclang/langserve/engine.pyi +73 -0
  61. jaclang/stubs/jaclang/langserve/sem_manager.pyi +89 -0
  62. jaclang/stubs/jaclang/langserve/server.pyi +38 -0
  63. jaclang/stubs/jaclang/langserve/utils.pyi +55 -0
  64. jaclang/stubs/jaclang/plugin/__init__.pyi +3 -0
  65. jaclang/stubs/jaclang/plugin/builtin.pyi +12 -0
  66. jaclang/stubs/jaclang/plugin/default.pyi +202 -0
  67. jaclang/stubs/jaclang/plugin/feature.pyi +176 -0
  68. jaclang/stubs/jaclang/plugin/spec.pyi +181 -0
  69. jaclang/stubs/jaclang/runtimelib/__init__.pyi +0 -0
  70. jaclang/stubs/jaclang/runtimelib/architype.pyi +133 -0
  71. jaclang/stubs/jaclang/runtimelib/constructs.pyi +41 -0
  72. jaclang/stubs/jaclang/runtimelib/context.pyi +48 -0
  73. jaclang/stubs/jaclang/runtimelib/importer.pyi +104 -0
  74. jaclang/stubs/jaclang/runtimelib/machine.pyi +6 -0
  75. jaclang/stubs/jaclang/runtimelib/memory.pyi +26 -0
  76. jaclang/stubs/jaclang/runtimelib/utils.pyi +35 -0
  77. jaclang/stubs/jaclang/settings.pyi +35 -0
  78. jaclang/stubs/jaclang/utils/__init__.pyi +0 -0
  79. jaclang/stubs/jaclang/utils/helpers.pyi +18 -0
  80. jaclang/stubs/jaclang/utils/lang_tools.pyi +43 -0
  81. jaclang/stubs/jaclang/utils/log.pyi +3 -0
  82. jaclang/stubs/jaclang/utils/treeprinter.pyi +47 -0
  83. jaclang/tests/fixtures/builtins_test.jac +16 -0
  84. jaclang/tests/fixtures/match_multi_ex.jac +12 -0
  85. jaclang/tests/test_cli.py +29 -2
  86. jaclang/tests/test_language.py +10 -0
  87. jaclang/utils/treeprinter.py +1 -1
  88. {jaclang-0.7.19.dist-info → jaclang-0.7.20.dist-info}/METADATA +1 -1
  89. {jaclang-0.7.19.dist-info → jaclang-0.7.20.dist-info}/RECORD +91 -25
  90. {jaclang-0.7.19.dist-info → jaclang-0.7.20.dist-info}/WHEEL +0 -0
  91. {jaclang-0.7.19.dist-info → jaclang-0.7.20.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,178 @@
1
+ import ast as ast3
2
+ import jaclang.compiler.absyntree as ast
3
+ from _typeshed import Incomplete
4
+ from jaclang.compiler.constant import EdgeDir as EdgeDir
5
+ from jaclang.compiler.passes import Pass as Pass
6
+ from jaclang.runtimelib.utils import (
7
+ extract_params as extract_params,
8
+ extract_type as extract_type,
9
+ get_sem_scope as get_sem_scope,
10
+ )
11
+ from typing import Sequence, TypeVar
12
+
13
+ T = TypeVar("T", bound=ast3.AST)
14
+
15
+ class PyastGenPass(Pass):
16
+ debuginfo: Incomplete
17
+ already_added: Incomplete
18
+ preamble: Incomplete
19
+ def before_pass(self) -> None: ...
20
+ def enter_node(self, node: ast.AstNode) -> None: ...
21
+ def exit_node(self, node: ast.AstNode) -> None: ...
22
+ def needs_jac_import(self) -> None: ...
23
+ def needs_typing(self) -> None: ...
24
+ def needs_abc(self) -> None: ...
25
+ def needs_enum(self) -> None: ...
26
+ def needs_jac_feature(self) -> None: ...
27
+ def needs_dataclass(self) -> None: ...
28
+ def needs_dataclass_field(self) -> None: ...
29
+ def flatten(self, body: list[T | list[T] | None]) -> list[T]: ...
30
+ def sync(
31
+ self, py_node: T, jac_node: ast.AstNode | None = None, deep: bool = False
32
+ ) -> T: ...
33
+ def pyinline_sync(self, py_nodes: list[ast3.AST]) -> list[ast3.AST]: ...
34
+ def resolve_stmt_block(
35
+ self,
36
+ node: (
37
+ ast.SubNodeList[ast.CodeBlockStmt]
38
+ | ast.SubNodeList[ast.ArchBlockStmt]
39
+ | ast.SubNodeList[ast.EnumBlockStmt]
40
+ | None
41
+ ),
42
+ doc: ast.String | None = None,
43
+ ) -> list[ast3.AST]: ...
44
+ def sync_many(self, py_nodes: list[T], jac_node: ast.AstNode) -> list[T]: ...
45
+ def list_to_attrib(
46
+ self, attribute_list: list[str], sync_node_list: Sequence[ast.AstNode]
47
+ ) -> ast3.AST: ...
48
+ def exit_sub_tag(self, node: ast.SubTag[ast.T]) -> None: ...
49
+ def exit_sub_node_list(self, node: ast.SubNodeList[ast.T]) -> None: ...
50
+ def exit_module(self, node: ast.Module) -> None: ...
51
+ def exit_global_vars(self, node: ast.GlobalVars) -> None: ...
52
+ def exit_test(self, node: ast.Test) -> None: ...
53
+ def exit_module_code(self, node: ast.ModuleCode) -> None: ...
54
+ def exit_py_inline_code(self, node: ast.PyInlineCode) -> None: ...
55
+ def exit_import(self, node: ast.Import) -> None: ...
56
+ def exit_module_path(self, node: ast.ModulePath) -> None: ...
57
+ def exit_module_item(self, node: ast.ModuleItem) -> None: ...
58
+ def enter_architype(self, node: ast.Architype) -> None: ...
59
+ def exit_architype(self, node: ast.Architype) -> None: ...
60
+ def collect_events(
61
+ self, node: ast.Architype
62
+ ) -> tuple[list[ast3.AST], list[ast3.AST]]: ...
63
+ def exit_arch_def(self, node: ast.ArchDef) -> None: ...
64
+ def enter_enum(self, node: ast.Enum) -> None: ...
65
+ def exit_enum(self, node: ast.Enum) -> None: ...
66
+ def exit_enum_def(self, node: ast.EnumDef) -> None: ...
67
+ def enter_ability(self, node: ast.Ability) -> None: ...
68
+ def exit_ability(self, node: ast.Ability) -> None: ...
69
+ def gen_llm_body(self, node: ast.Ability) -> list[ast3.AST]: ...
70
+ def by_llm_call(
71
+ self,
72
+ model: ast3.AST,
73
+ model_params: dict[str, ast.Expr],
74
+ scope: ast3.AST,
75
+ inputs: Sequence[ast3.AST | None],
76
+ outputs: Sequence[ast3.AST | None] | ast3.Call,
77
+ action: ast3.AST | None,
78
+ include_info: list[tuple[str, ast3.AST]],
79
+ exclude_info: list[tuple[str, ast3.AST]],
80
+ ) -> ast3.Call: ...
81
+ def exit_ability_def(self, node: ast.AbilityDef) -> None: ...
82
+ def exit_func_signature(self, node: ast.FuncSignature) -> None: ...
83
+ def exit_event_signature(self, node: ast.EventSignature) -> None: ...
84
+ def exit_arch_ref(self, node: ast.ArchRef) -> None: ...
85
+ def exit_arch_ref_chain(self, node: ast.ArchRefChain) -> None: ...
86
+ def exit_param_var(self, node: ast.ParamVar) -> None: ...
87
+ def exit_arch_has(self, node: ast.ArchHas) -> None: ...
88
+ def exit_has_var(self, node: ast.HasVar) -> None: ...
89
+ def exit_typed_ctx_block(self, node: ast.TypedCtxBlock) -> None: ...
90
+ def exit_if_stmt(self, node: ast.IfStmt) -> None: ...
91
+ def exit_else_if(self, node: ast.ElseIf) -> None: ...
92
+ def exit_else_stmt(self, node: ast.ElseStmt) -> None: ...
93
+ def exit_expr_stmt(self, node: ast.ExprStmt) -> None: ...
94
+ def exit_try_stmt(self, node: ast.TryStmt) -> None: ...
95
+ def exit_except(self, node: ast.Except) -> None: ...
96
+ def exit_finally_stmt(self, node: ast.FinallyStmt) -> None: ...
97
+ def exit_iter_for_stmt(self, node: ast.IterForStmt) -> None: ...
98
+ def exit_in_for_stmt(self, node: ast.InForStmt) -> None: ...
99
+ def exit_while_stmt(self, node: ast.WhileStmt) -> None: ...
100
+ def exit_with_stmt(self, node: ast.WithStmt) -> None: ...
101
+ def exit_expr_as_item(self, node: ast.ExprAsItem) -> None: ...
102
+ def exit_raise_stmt(self, node: ast.RaiseStmt) -> None: ...
103
+ def exit_assert_stmt(self, node: ast.AssertStmt) -> None: ...
104
+ def exit_check_stmt(self, node: ast.CheckStmt) -> None: ...
105
+ def exit_ctrl_stmt(self, node: ast.CtrlStmt) -> None: ...
106
+ def exit_delete_stmt(self, node: ast.DeleteStmt) -> None: ...
107
+ def exit_report_stmt(self, node: ast.ReportStmt) -> None: ...
108
+ def exit_return_stmt(self, node: ast.ReturnStmt) -> None: ...
109
+ def exit_yield_expr(self, node: ast.YieldExpr) -> None: ...
110
+ def exit_ignore_stmt(self, node: ast.IgnoreStmt) -> None: ...
111
+ def exit_visit_stmt(self, node: ast.VisitStmt) -> None: ...
112
+ def exit_revisit_stmt(self, node: ast.RevisitStmt) -> None: ...
113
+ def exit_disengage_stmt(self, node: ast.DisengageStmt) -> None: ...
114
+ def exit_await_expr(self, node: ast.AwaitExpr) -> None: ...
115
+ def exit_global_stmt(self, node: ast.GlobalStmt) -> None: ...
116
+ def exit_non_local_stmt(self, node: ast.NonLocalStmt) -> None: ...
117
+ def exit_assignment(self, node: ast.Assignment) -> None: ...
118
+ def exit_binary_expr(self, node: ast.BinaryExpr) -> None: ...
119
+ def translate_jac_bin_op(self, node: ast.BinaryExpr) -> list[ast3.AST]: ...
120
+ def exit_compare_expr(self, node: ast.CompareExpr) -> None: ...
121
+ def exit_bool_expr(self, node: ast.BoolExpr) -> None: ...
122
+ def exit_lambda_expr(self, node: ast.LambdaExpr) -> None: ...
123
+ def exit_unary_expr(self, node: ast.UnaryExpr) -> None: ...
124
+ def exit_if_else_expr(self, node: ast.IfElseExpr) -> None: ...
125
+ def exit_multi_string(self, node: ast.MultiString) -> None: ...
126
+ def exit_f_string(self, node: ast.FString) -> None: ...
127
+ def exit_list_val(self, node: ast.ListVal) -> None: ...
128
+ def exit_set_val(self, node: ast.SetVal) -> None: ...
129
+ def exit_tuple_val(self, node: ast.TupleVal) -> None: ...
130
+ def exit_dict_val(self, node: ast.DictVal) -> None: ...
131
+ def exit_k_v_pair(self, node: ast.KVPair) -> None: ...
132
+ def exit_k_w_pair(self, node: ast.KWPair) -> None: ...
133
+ def exit_inner_compr(self, node: ast.InnerCompr) -> None: ...
134
+ def exit_list_compr(self, node: ast.ListCompr) -> None: ...
135
+ def exit_gen_compr(self, node: ast.GenCompr) -> None: ...
136
+ def exit_set_compr(self, node: ast.SetCompr) -> None: ...
137
+ def exit_dict_compr(self, node: ast.DictCompr) -> None: ...
138
+ def exit_atom_trailer(self, node: ast.AtomTrailer) -> None: ...
139
+ def exit_atom_unit(self, node: ast.AtomUnit) -> None: ...
140
+ def exit_func_call(self, node: ast.FuncCall) -> None: ...
141
+ def exit_index_slice(self, node: ast.IndexSlice) -> None: ...
142
+ def exit_special_var_ref(self, node: ast.SpecialVarRef) -> None: ...
143
+ def exit_edge_ref_trailer(self, node: ast.EdgeRefTrailer) -> None: ...
144
+ def exit_edge_op_ref(self, node: ast.EdgeOpRef) -> None: ...
145
+ def translate_edge_op_ref(
146
+ self,
147
+ loc: ast3.AST,
148
+ node: ast.EdgeOpRef,
149
+ targ: ast3.AST | None,
150
+ edges_only: bool,
151
+ ) -> ast3.AST: ...
152
+ def exit_disconnect_op(self, node: ast.DisconnectOp) -> None: ...
153
+ def exit_connect_op(self, node: ast.ConnectOp) -> None: ...
154
+ def exit_filter_compr(self, node: ast.FilterCompr) -> None: ...
155
+ def exit_assign_compr(self, node: ast.AssignCompr) -> None: ...
156
+ def exit_match_stmt(self, node: ast.MatchStmt) -> None: ...
157
+ def exit_match_case(self, node: ast.MatchCase) -> None: ...
158
+ def exit_match_or(self, node: ast.MatchOr) -> None: ...
159
+ def exit_match_as(self, node: ast.MatchAs) -> None: ...
160
+ def exit_match_wild(self, node: ast.MatchWild) -> None: ...
161
+ def exit_match_value(self, node: ast.MatchValue) -> None: ...
162
+ def exit_match_singleton(self, node: ast.MatchSingleton) -> None: ...
163
+ def exit_match_sequence(self, node: ast.MatchSequence) -> None: ...
164
+ def exit_match_mapping(self, node: ast.MatchMapping) -> None: ...
165
+ def exit_match_k_v_pair(self, node: ast.MatchKVPair) -> None: ...
166
+ def exit_match_star(self, node: ast.MatchStar) -> None: ...
167
+ def exit_match_arch(self, node: ast.MatchArch) -> None: ...
168
+ def exit_token(self, node: ast.Token) -> None: ...
169
+ def exit_name(self, node: ast.Name) -> None: ...
170
+ def exit_float(self, node: ast.Float) -> None: ...
171
+ def exit_int(self, node: ast.Int) -> None: ...
172
+ def exit_string(self, node: ast.String) -> None: ...
173
+ def exit_bool(self, node: ast.Bool) -> None: ...
174
+ def exit_builtin_type(self, node: ast.BuiltinType) -> None: ...
175
+ def exit_null(self, node: ast.Null) -> None: ...
176
+ def exit_ellipsis(self, node: ast.Ellipsis) -> None: ...
177
+ def exit_semi(self, node: ast.Semi) -> None: ...
178
+ def exit_comment_token(self, node: ast.CommentToken) -> None: ...
@@ -0,0 +1,135 @@
1
+ import ast as py_ast
2
+ import jaclang.compiler.absyntree as ast
3
+ from _typeshed import Incomplete
4
+ from jaclang.compiler.constant import Tokens as Tok
5
+ from jaclang.compiler.passes.ir_pass import Pass as Pass
6
+ from jaclang.utils.helpers import pascal_to_snake as pascal_to_snake
7
+ from typing import TypeAlias, TypeVar
8
+
9
+ T = TypeVar("T", bound=ast.AstNode)
10
+
11
+ class PyastBuildPass(Pass[ast.PythonModuleAst]):
12
+ mod_path: Incomplete
13
+ def __init__(self, input_ir: ast.PythonModuleAst) -> None: ...
14
+ cur_node: Incomplete
15
+ def nu(self, node: T) -> T: ...
16
+ def pp(self, node: py_ast.AST) -> None: ...
17
+ def convert(self, node: py_ast.AST) -> ast.AstNode: ...
18
+ ir: Incomplete
19
+ def transform(self, ir: ast.PythonModuleAst) -> ast.Module: ...
20
+ def extract_with_entry(
21
+ self, body: list[ast.AstNode], exclude_types: TypeAlias = ...
22
+ ) -> list[T | ast.ModuleCode]: ...
23
+ def proc_module(self, node: py_ast.Module) -> ast.Module: ...
24
+ def proc_function_def(
25
+ self, node: py_ast.FunctionDef | py_ast.AsyncFunctionDef
26
+ ) -> ast.Ability: ...
27
+ def proc_async_function_def(self, node: py_ast.AsyncFunctionDef) -> ast.Ability: ...
28
+ def proc_class_def(self, node: py_ast.ClassDef) -> ast.Architype | ast.Enum: ...
29
+ def proc_return(self, node: py_ast.Return) -> ast.ReturnStmt | None: ...
30
+ def proc_delete(self, node: py_ast.Delete) -> ast.DeleteStmt: ...
31
+ def proc_assign(self, node: py_ast.Assign) -> ast.Assignment: ...
32
+ def proc_aug_assign(self, node: py_ast.AugAssign) -> ast.Assignment: ...
33
+ def proc_ann_assign(self, node: py_ast.AnnAssign) -> ast.Assignment: ...
34
+ def proc_for(self, node: py_ast.For) -> ast.InForStmt: ...
35
+ def proc_async_for(self, node: py_ast.AsyncFor) -> ast.InForStmt: ...
36
+ def proc_while(self, node: py_ast.While) -> ast.WhileStmt: ...
37
+ def proc_if(self, node: py_ast.If) -> ast.IfStmt: ...
38
+ def proc_with(self, node: py_ast.With) -> ast.WithStmt: ...
39
+ def proc_async_with(self, node: py_ast.AsyncWith) -> ast.WithStmt: ...
40
+ def proc_raise(self, node: py_ast.Raise) -> ast.RaiseStmt: ...
41
+ def proc_assert(self, node: py_ast.Assert) -> ast.AssertStmt: ...
42
+ def proc_attribute(self, node: py_ast.Attribute) -> ast.AtomTrailer: ...
43
+ def proc_await(self, node: py_ast.Await) -> ast.AwaitExpr: ...
44
+ def proc_bin_op(self, node: py_ast.BinOp) -> ast.AtomUnit: ...
45
+ def proc_unary_op(self, node: py_ast.UnaryOp) -> ast.UnaryExpr: ...
46
+ def proc_bool_op(self, node: py_ast.BoolOp) -> ast.BoolExpr: ...
47
+ def proc_break(self, node: py_ast.Break) -> ast.CtrlStmt: ...
48
+ def proc_call(self, node: py_ast.Call) -> ast.FuncCall: ...
49
+ def proc_compare(self, node: py_ast.Compare) -> ast.CompareExpr: ...
50
+ def proc_constant(self, node: py_ast.Constant) -> ast.Literal: ...
51
+ def proc_continue(self, node: py_ast.Continue) -> ast.CtrlStmt: ...
52
+ def proc_dict(self, node: py_ast.Dict) -> ast.DictVal: ...
53
+ def proc_dict_comp(self, node: py_ast.DictComp) -> ast.DictCompr: ...
54
+ def proc_ellipsis(self, node: py_ast.Ellipsis) -> None: ...
55
+ def proc_except_handler(self, node: py_ast.ExceptHandler) -> ast.Except: ...
56
+ def proc_expr(self, node: py_ast.Expr) -> ast.ExprStmt: ...
57
+ def proc_formatted_value(self, node: py_ast.FormattedValue) -> ast.ExprStmt: ...
58
+ def proc_function_type(self, node: py_ast.FunctionType) -> None: ...
59
+ def proc_generator_exp(self, node: py_ast.GeneratorExp) -> ast.GenCompr: ...
60
+ def proc_global(self, node: py_ast.Global) -> ast.GlobalStmt: ...
61
+ def proc_if_exp(self, node: py_ast.IfExp) -> ast.IfElseExpr: ...
62
+ def proc_import(self, node: py_ast.Import) -> ast.Import: ...
63
+ def proc_import_from(self, node: py_ast.ImportFrom) -> ast.Import: ...
64
+ def proc_joined_str(self, node: py_ast.JoinedStr) -> ast.FString: ...
65
+ def proc_lambda(self, node: py_ast.Lambda) -> ast.LambdaExpr: ...
66
+ def proc_list(self, node: py_ast.List) -> ast.ListVal: ...
67
+ def proc_list_comp(self, node: py_ast.ListComp) -> ast.ListCompr: ...
68
+ def proc_match(self, node: py_ast.Match) -> ast.MatchStmt: ...
69
+ def proc_match_as(self, node: py_ast.MatchAs) -> ast.MatchAs | ast.MatchWild: ...
70
+ def proc_match_class(self, node: py_ast.MatchClass) -> ast.MatchArch: ...
71
+ def proc_match_mapping(self, node: py_ast.MatchMapping) -> ast.MatchMapping: ...
72
+ def proc_match_or(self, node: py_ast.MatchOr) -> ast.MatchOr: ...
73
+ def proc_match_sequence(self, node: py_ast.MatchSequence) -> ast.MatchSequence: ...
74
+ def proc_match_singleton(
75
+ self, node: py_ast.MatchSingleton
76
+ ) -> ast.MatchSingleton: ...
77
+ def proc_match_star(self, node: py_ast.MatchStar) -> ast.MatchStar: ...
78
+ def proc_match_value(self, node: py_ast.MatchValue) -> ast.MatchValue: ...
79
+ def proc_name(self, node: py_ast.Name) -> ast.Name: ...
80
+ def proc_named_expr(self, node: py_ast.NamedExpr) -> ast.BinaryExpr: ...
81
+ def proc_nonlocal(self, node: py_ast.Nonlocal) -> ast.NonLocalStmt: ...
82
+ def proc_pass(self, node: py_ast.Pass) -> ast.Semi: ...
83
+ def proc_set(self, node: py_ast.Set) -> ast.SetVal: ...
84
+ def proc_set_comp(self, node: py_ast.SetComp) -> ast.ListCompr: ...
85
+ def proc_slice(self, node: py_ast.Slice) -> ast.IndexSlice: ...
86
+ def proc_starred(self, node: py_ast.Starred) -> ast.UnaryExpr: ...
87
+ def proc_subscript(self, node: py_ast.Subscript) -> ast.AtomTrailer: ...
88
+ def proc_try(self, node: py_ast.Try | py_ast.TryStar) -> ast.TryStmt: ...
89
+ def proc_try_star(self, node: py_ast.TryStar) -> ast.TryStmt: ...
90
+ def proc_tuple(self, node: py_ast.Tuple) -> ast.TupleVal: ...
91
+ def proc_yield(self, node: py_ast.Yield) -> ast.YieldExpr: ...
92
+ def proc_yield_from(self, node: py_ast.YieldFrom) -> ast.YieldExpr: ...
93
+ def proc_alias(self, node: py_ast.alias) -> ast.ExprAsItem: ...
94
+ def proc_arg(self, node: py_ast.arg) -> ast.ParamVar: ...
95
+ def proc_arguments(self, node: py_ast.arguments) -> ast.FuncSignature: ...
96
+ def operator(self, tok: Tok, value: str) -> ast.Token: ...
97
+ def proc_and(self, node: py_ast.And) -> ast.Token: ...
98
+ def proc_or(self, node: py_ast.Or) -> ast.Token: ...
99
+ def proc_add(self, node: py_ast.Add) -> ast.Token: ...
100
+ def proc_bit_and(self, node: py_ast.BitAnd) -> ast.Token: ...
101
+ def proc_bit_or(self, node: py_ast.BitOr) -> ast.Token: ...
102
+ def proc_bit_xor(self, node: py_ast.BitXor) -> ast.Token: ...
103
+ def proc_div(self, node: py_ast.Div) -> ast.Token: ...
104
+ def proc_floor_div(self, node: py_ast.FloorDiv) -> ast.Token: ...
105
+ def proc_l_shift(self, node: py_ast.LShift) -> ast.Token: ...
106
+ def proc_mod(self, node: py_ast.Mod) -> ast.Token: ...
107
+ def proc_mult(self, node: py_ast.Mult) -> ast.Token: ...
108
+ def proc_mat_mult(self, node: py_ast.MatMult) -> ast.Token: ...
109
+ def proc_pow(self, node: py_ast.Pow) -> ast.Token: ...
110
+ def proc_r_shift(self, node: py_ast.RShift) -> ast.Token: ...
111
+ def proc_sub(self, node: py_ast.Sub) -> ast.Token: ...
112
+ def proc_invert(self, node: py_ast.Invert) -> ast.Token: ...
113
+ def proc_not(self, node: py_ast.Not) -> ast.Token: ...
114
+ def proc_u_add(self, node: py_ast.UAdd) -> ast.Token: ...
115
+ def proc_u_sub(self, node: py_ast.USub) -> ast.Token: ...
116
+ def proc_eq(self, node: py_ast.Eq) -> ast.Token: ...
117
+ def proc_gt(self, node: py_ast.Gt) -> ast.Token: ...
118
+ def proc_gt_e(self, node: py_ast.GtE) -> ast.Token: ...
119
+ def proc_in(self, node: py_ast.In) -> ast.Token: ...
120
+ def proc_is(self, node: py_ast.Is) -> ast.Token: ...
121
+ def proc_is_not(self, node: py_ast.IsNot) -> ast.Token: ...
122
+ def proc_lt(self, node: py_ast.Lt) -> ast.Token: ...
123
+ def proc_lt_e(self, node: py_ast.LtE) -> ast.Token: ...
124
+ def proc_not_eq(self, node: py_ast.NotEq) -> ast.Token: ...
125
+ def proc_not_in(self, node: py_ast.NotIn) -> ast.Token: ...
126
+ def proc_comprehension(self, node: py_ast.comprehension) -> ast.InnerCompr: ...
127
+ def proc_keyword(self, node: py_ast.keyword) -> ast.KWPair: ...
128
+ def proc_match_case(self, node: py_ast.match_case) -> ast.MatchCase: ...
129
+ def proc_withitem(self, node: py_ast.withitem) -> ast.ExprAsItem: ...
130
+ def proc_param_spec(self, node: py_ast.ParamSpec) -> None: ...
131
+ def proc_type_alias(self, node: py_ast.TypeAlias) -> None: ...
132
+ def proc_type_var(self, node: py_ast.TypeVar) -> None: ...
133
+ def proc_type_var_tuple(self, node: py_ast.TypeVarTuple) -> None: ...
134
+ def convert_to_doc(self, string: ast.String) -> None: ...
135
+ def aug_op_map(self, tok_dict: dict, op: ast.Token) -> str: ...
@@ -0,0 +1,6 @@
1
+ import jaclang.compiler.absyntree as ast
2
+ from jaclang.compiler.passes import Pass as Pass
3
+
4
+ class PyBytecodeGenPass(Pass):
5
+ def before_pass(self) -> None: ...
6
+ def enter_module(self, node: ast.Module) -> None: ...
@@ -0,0 +1,22 @@
1
+ import ast as ast3
2
+ import jaclang.compiler.absyntree as ast
3
+ from jaclang.compiler.passes import Pass as Pass
4
+
5
+ class PyJacAstLinkPass(Pass):
6
+ def link_jac_py_nodes(
7
+ self, jac_node: ast.AstNode, py_nodes: list[ast3.AST]
8
+ ) -> None: ...
9
+ def exit_module_path(self, node: ast.ModulePath) -> None: ...
10
+ def exit_architype(self, node: ast.Architype) -> None: ...
11
+ def exit_arch_def(self, node: ast.ArchDef) -> None: ...
12
+ def exit_enum(self, node: ast.Enum) -> None: ...
13
+ def exit_enum_def(self, node: ast.EnumDef) -> None: ...
14
+ def exit_ability(self, node: ast.Ability) -> None: ...
15
+ def exit_ability_def(self, node: ast.AbilityDef) -> None: ...
16
+ def exit_param_var(self, node: ast.ParamVar) -> None: ...
17
+ def exit_except(self, node: ast.Except) -> None: ...
18
+ def exit_expr_as_item(self, node: ast.ExprAsItem) -> None: ...
19
+ def exit_global_stmt(self, node: ast.GlobalStmt) -> None: ...
20
+ def exit_non_local_stmt(self, node: ast.NonLocalStmt) -> None: ...
21
+ def exit_k_w_pair(self, node: ast.KWPair) -> None: ...
22
+ def exit_atom_trailer(self, node: ast.AtomTrailer) -> None: ...
@@ -0,0 +1,9 @@
1
+ import jaclang.compiler.absyntree as ast
2
+ from jaclang.compiler.passes import Pass as Pass
3
+
4
+ class PyOutPass(Pass):
5
+ def before_pass(self) -> None: ...
6
+ def enter_module(self, node: ast.Module) -> None: ...
7
+ def gen_python(self, node: ast.Module, out_path: str) -> None: ...
8
+ def dump_bytecode(self, node: ast.Module, mod_path: str, out_path: str) -> None: ...
9
+ def get_output_targets(self, node: ast.Module) -> tuple[str, str, str]: ...
@@ -0,0 +1,15 @@
1
+ import jaclang.compiler.absyntree as ast
2
+ from jaclang.compiler.passes import Pass as Pass
3
+ from jaclang.compiler.semtable import SemInfo as SemInfo, SemRegistry as SemRegistry
4
+ from jaclang.runtimelib.utils import get_sem_scope as get_sem_scope
5
+
6
+ class RegistryPass(Pass):
7
+ modules_visited: list[ast.Module]
8
+ def enter_module(self, node: ast.Module) -> None: ...
9
+ def exit_module(self, node: ast.Module) -> None: ...
10
+ def exit_architype(self, node: ast.Architype) -> None: ...
11
+ def exit_enum(self, node: ast.Enum) -> None: ...
12
+ def exit_has_var(self, node: ast.HasVar) -> None: ...
13
+ def exit_assignment(self, node: ast.Assignment) -> None: ...
14
+ def exit_name(self, node: ast.Name) -> None: ...
15
+ def extract_type(self, node: ast.AstNode) -> list[str]: ...
@@ -0,0 +1,19 @@
1
+ from .access_modifier_pass import AccessCheckPass as AccessCheckPass
2
+ from .def_impl_match_pass import DeclImplMatchPass as DeclImplMatchPass
3
+ from .def_use_pass import DefUsePass as DefUsePass
4
+ from .fuse_typeinfo_pass import FuseTypeInfoPass as FuseTypeInfoPass
5
+ from .import_pass import JacImportPass as JacImportPass, PyImportPass as PyImportPass
6
+ from .pyast_gen_pass import PyastGenPass as PyastGenPass
7
+ from .pybc_gen_pass import PyBytecodeGenPass as PyBytecodeGenPass
8
+ from .pyjac_ast_link_pass import PyJacAstLinkPass as PyJacAstLinkPass
9
+ from .pyout_pass import PyOutPass as PyOutPass
10
+ from .registry_pass import RegistryPass as RegistryPass
11
+ from .sub_node_tab_pass import SubNodeTabPass as SubNodeTabPass
12
+ from .sym_tab_build_pass import SymTabBuildPass as SymTabBuildPass
13
+ from .type_check_pass import JacTypeCheckPass as JacTypeCheckPass
14
+ from _typeshed import Incomplete
15
+
16
+ py_code_gen: Incomplete
17
+ type_checker_sched: Incomplete
18
+ py_code_gen_typed: Incomplete
19
+ py_compiler: Incomplete
@@ -0,0 +1,6 @@
1
+ import jaclang.compiler.absyntree as ast
2
+ from jaclang.compiler.passes import Pass as Pass
3
+
4
+ class SubNodeTabPass(Pass):
5
+ def enter_node(self, node: ast.AstNode) -> None: ...
6
+ def exit_node(self, node: ast.AstNode) -> None: ...
@@ -0,0 +1,147 @@
1
+ import jaclang.compiler.absyntree as ast
2
+ from _typeshed import Incomplete
3
+ from jaclang.compiler.passes import Pass as Pass
4
+ from jaclang.compiler.symtable import SymbolTable as SymbolTable
5
+
6
+ class SymTabBuildPass(Pass):
7
+ cur_sym_tab: Incomplete
8
+ def before_pass(self) -> None: ...
9
+ def push_scope(
10
+ self, name: str, key_node: ast.AstNode, fresh: bool = False
11
+ ) -> None: ...
12
+ def pop_scope(self) -> SymbolTable: ...
13
+ @property
14
+ def cur_scope(self) -> SymbolTable: ...
15
+ def sync_node_to_scope(self, node: ast.AstNode) -> None: ...
16
+ def enter_module(self, node: ast.Module) -> None: ...
17
+ def exit_module(self, node: ast.Module) -> None: ...
18
+ def enter_global_vars(self, node: ast.GlobalVars) -> None: ...
19
+ def exit_global_vars(self, node: ast.GlobalVars) -> None: ...
20
+ def enter_sub_tag(self, node: ast.SubTag) -> None: ...
21
+ def enter_sub_node_list(self, node: ast.SubNodeList) -> None: ...
22
+ def enter_test(self, node: ast.Test) -> None: ...
23
+ def exit_test(self, node: ast.Test) -> None: ...
24
+ def enter_module_code(self, node: ast.ModuleCode) -> None: ...
25
+ def exit_module_code(self, node: ast.ModuleCode) -> None: ...
26
+ def enter_py_inline_code(self, node: ast.PyInlineCode) -> None: ...
27
+ def enter_import(self, node: ast.Import) -> None: ...
28
+ def exit_import(self, node: ast.Import) -> None: ...
29
+ def enter_module_path(self, node: ast.ModulePath) -> None: ...
30
+ def exit_module_path(self, node: ast.ModulePath) -> None: ...
31
+ def enter_module_item(self, node: ast.ModuleItem) -> None: ...
32
+ def enter_architype(self, node: ast.Architype) -> None: ...
33
+ def exit_architype(self, node: ast.Architype) -> None: ...
34
+ def enter_arch_def(self, node: ast.ArchDef) -> None: ...
35
+ def exit_arch_def(self, node: ast.ArchDef) -> None: ...
36
+ def enter_ability(self, node: ast.Ability) -> None: ...
37
+ def exit_ability(self, node: ast.Ability) -> None: ...
38
+ def enter_ability_def(self, node: ast.AbilityDef) -> None: ...
39
+ def exit_ability_def(self, node: ast.AbilityDef) -> None: ...
40
+ def enter_event_signature(self, node: ast.EventSignature) -> None: ...
41
+ def enter_arch_ref_chain(self, node: ast.ArchRefChain) -> None: ...
42
+ def enter_func_signature(self, node: ast.FuncSignature) -> None: ...
43
+ def enter_param_var(self, node: ast.ParamVar) -> None: ...
44
+ def enter_enum(self, node: ast.Enum) -> None: ...
45
+ def exit_enum(self, node: ast.Enum) -> None: ...
46
+ def enter_enum_def(self, node: ast.EnumDef) -> None: ...
47
+ def exit_enum_def(self, node: ast.EnumDef) -> None: ...
48
+ def enter_arch_has(self, node: ast.ArchHas) -> None: ...
49
+ def enter_has_var(self, node: ast.HasVar) -> None: ...
50
+ def enter_typed_ctx_block(self, node: ast.TypedCtxBlock) -> None: ...
51
+ def exit_typed_ctx_block(self, node: ast.TypedCtxBlock) -> None: ...
52
+ def enter_if_stmt(self, node: ast.IfStmt) -> None: ...
53
+ def exit_if_stmt(self, node: ast.IfStmt) -> None: ...
54
+ def enter_else_if(self, node: ast.ElseIf) -> None: ...
55
+ def exit_else_if(self, node: ast.ElseIf) -> None: ...
56
+ def enter_else_stmt(self, node: ast.ElseStmt) -> None: ...
57
+ def exit_else_stmt(self, node: ast.ElseStmt) -> None: ...
58
+ def enter_expr_stmt(self, node: ast.ExprStmt) -> None: ...
59
+ def enter_try_stmt(self, node: ast.TryStmt) -> None: ...
60
+ def exit_try_stmt(self, node: ast.TryStmt) -> None: ...
61
+ def enter_except(self, node: ast.Except) -> None: ...
62
+ def exit_except(self, node: ast.Except) -> None: ...
63
+ def enter_finally_stmt(self, node: ast.FinallyStmt) -> None: ...
64
+ def exit_finally_stmt(self, node: ast.FinallyStmt) -> None: ...
65
+ def enter_iter_for_stmt(self, node: ast.IterForStmt) -> None: ...
66
+ def exit_iter_for_stmt(self, node: ast.IterForStmt) -> None: ...
67
+ def enter_in_for_stmt(self, node: ast.InForStmt) -> None: ...
68
+ def exit_in_for_stmt(self, node: ast.InForStmt) -> None: ...
69
+ def enter_name(self, node: ast.Name) -> None: ...
70
+ def enter_while_stmt(self, node: ast.WhileStmt) -> None: ...
71
+ def exit_while_stmt(self, node: ast.WhileStmt) -> None: ...
72
+ def enter_with_stmt(self, node: ast.WithStmt) -> None: ...
73
+ def exit_with_stmt(self, node: ast.WithStmt) -> None: ...
74
+ def enter_expr_as_item(self, node: ast.ExprAsItem) -> None: ...
75
+ def enter_raise_stmt(self, node: ast.RaiseStmt) -> None: ...
76
+ def enter_assert_stmt(self, node: ast.AssertStmt) -> None: ...
77
+ def enter_check_stmt(self, node: ast.CheckStmt) -> None: ...
78
+ def enter_ctrl_stmt(self, node: ast.CtrlStmt) -> None: ...
79
+ def enter_delete_stmt(self, node: ast.DeleteStmt) -> None: ...
80
+ def enter_report_stmt(self, node: ast.ReportStmt) -> None: ...
81
+ def enter_return_stmt(self, node: ast.ReturnStmt) -> None: ...
82
+ def enter_yield_expr(self, node: ast.YieldExpr) -> None: ...
83
+ def enter_ignore_stmt(self, node: ast.IgnoreStmt) -> None: ...
84
+ def enter_visit_stmt(self, node: ast.VisitStmt) -> None: ...
85
+ def enter_revisit_stmt(self, node: ast.RevisitStmt) -> None: ...
86
+ def enter_disengage_stmt(self, node: ast.DisengageStmt) -> None: ...
87
+ def enter_await_expr(self, node: ast.AwaitExpr) -> None: ...
88
+ def enter_global_stmt(self, node: ast.GlobalStmt) -> None: ...
89
+ def enter_non_local_stmt(self, node: ast.NonLocalStmt) -> None: ...
90
+ def enter_assignment(self, node: ast.Assignment) -> None: ...
91
+ def enter_binary_expr(self, node: ast.BinaryExpr) -> None: ...
92
+ def enter_compare_expr(self, node: ast.CompareExpr) -> None: ...
93
+ def enter_if_else_expr(self, node: ast.IfElseExpr) -> None: ...
94
+ def enter_unary_expr(self, node: ast.UnaryExpr) -> None: ...
95
+ def enter_bool_expr(self, node: ast.BoolExpr) -> None: ...
96
+ def enter_lambda_expr(self, node: ast.LambdaExpr) -> None: ...
97
+ def exit_lambda_expr(self, node: ast.LambdaExpr) -> None: ...
98
+ def enter_multi_string(self, node: ast.MultiString) -> None: ...
99
+ def enter_list_val(self, node: ast.ListVal) -> None: ...
100
+ def enter_set_val(self, node: ast.SetVal) -> None: ...
101
+ def enter_tuple_val(self, node: ast.TupleVal) -> None: ...
102
+ def enter_dict_val(self, node: ast.DictVal) -> None: ...
103
+ def enter_k_v_pair(self, node: ast.KVPair) -> None: ...
104
+ def enter_k_w_pair(self, node: ast.KWPair) -> None: ...
105
+ def enter_list_compr(self, node: ast.ListCompr) -> None: ...
106
+ def enter_gen_compr(self, node: ast.GenCompr) -> None: ...
107
+ def enter_set_compr(self, node: ast.SetCompr) -> None: ...
108
+ def enter_inner_compr(self, node: ast.InnerCompr) -> None: ...
109
+ def exit_inner_compr(self, node: ast.InnerCompr) -> None: ...
110
+ def enter_dict_compr(self, node: ast.DictCompr) -> None: ...
111
+ def exit_dict_compr(self, node: ast.DictCompr) -> None: ...
112
+ def enter_atom_trailer(self, node: ast.AtomTrailer) -> None: ...
113
+ def enter_atom_unit(self, node: ast.AtomUnit) -> None: ...
114
+ def enter_func_call(self, node: ast.FuncCall) -> None: ...
115
+ def enter_index_slice(self, node: ast.IndexSlice) -> None: ...
116
+ def enter_arch_ref(self, node: ast.ArchRef) -> None: ...
117
+ def enter_special_var_ref(self, node: ast.SpecialVarRef) -> None: ...
118
+ def enter_edge_ref_trailer(self, node: ast.EdgeRefTrailer) -> None: ...
119
+ def enter_edge_op_ref(self, node: ast.EdgeOpRef) -> None: ...
120
+ def enter_disconnect_op(self, node: ast.DisconnectOp) -> None: ...
121
+ def enter_connect_op(self, node: ast.ConnectOp) -> None: ...
122
+ def enter_filter_compr(self, node: ast.FilterCompr) -> None: ...
123
+ def enter_assign_compr(self, node: ast.AssignCompr) -> None: ...
124
+ def enter_f_string(self, node: ast.FString) -> None: ...
125
+ def enter_match_stmt(self, node: ast.MatchStmt) -> None: ...
126
+ def enter_match_case(self, node: ast.MatchCase) -> None: ...
127
+ def exit_match_case(self, node: ast.MatchCase) -> None: ...
128
+ def enter_match_or(self, node: ast.MatchOr) -> None: ...
129
+ def enter_match_as(self, node: ast.MatchAs) -> None: ...
130
+ def enter_match_wild(self, node: ast.MatchWild) -> None: ...
131
+ def enter_match_value(self, node: ast.MatchValue) -> None: ...
132
+ def enter_match_singleton(self, node: ast.MatchSingleton) -> None: ...
133
+ def enter_match_sequence(self, node: ast.MatchSequence) -> None: ...
134
+ def enter_match_mapping(self, node: ast.MatchMapping) -> None: ...
135
+ def enter_match_k_v_pair(self, node: ast.MatchKVPair) -> None: ...
136
+ def enter_match_star(self, node: ast.MatchStar) -> None: ...
137
+ def enter_match_arch(self, node: ast.MatchArch) -> None: ...
138
+ def enter_token(self, node: ast.Token) -> None: ...
139
+ def enter_float(self, node: ast.Float) -> None: ...
140
+ def enter_int(self, node: ast.Int) -> None: ...
141
+ def enter_string(self, node: ast.String) -> None: ...
142
+ def enter_bool(self, node: ast.Bool) -> None: ...
143
+ def enter_null(self, node: ast.Null) -> None: ...
144
+ def enter_ellipsis(self, node: ast.Ellipsis) -> None: ...
145
+ def enter_builtin_type(self, node: ast.BuiltinType) -> None: ...
146
+ def enter_semi(self, node: ast.Semi) -> None: ...
147
+ def enter_comment_token(self, node: ast.CommentToken) -> None: ...
@@ -0,0 +1,11 @@
1
+ import jaclang.compiler.absyntree as ast
2
+ from jaclang.compiler.passes import Pass as Pass
3
+
4
+ class JacTypeCheckPass(Pass):
5
+ def before_pass(self) -> None: ...
6
+ def enter_module(self, node: ast.Module) -> None: ...
7
+ def after_pass(self) -> None: ...
8
+ def default_message_cb(
9
+ self, filename: str | None, new_messages: list[str], is_serious: bool
10
+ ) -> None: ...
11
+ def api(self) -> None: ...
@@ -0,0 +1,4 @@
1
+ from .fuse_comments_pass import FuseCommentsPass as FuseCommentsPass
2
+ from .jac_formatter_pass import JacFormatPass as JacFormatPass
3
+
4
+ __all__ = ["FuseCommentsPass", "JacFormatPass"]
@@ -0,0 +1,12 @@
1
+ import jaclang.compiler.absyntree as ast
2
+ from _typeshed import Incomplete
3
+ from jaclang.compiler.passes import Pass as Pass
4
+
5
+ class FuseCommentsPass(Pass):
6
+ all_tokens: Incomplete
7
+ comments: Incomplete
8
+ def before_pass(self) -> None: ...
9
+ def exit_node(self, node: ast.AstNode) -> None: ...
10
+ def after_pass(self) -> None: ...
11
+
12
+ def is_comment_next(cmt: ast.CommentToken, code: ast.Token) -> bool: ...