jaclang 0.8.6__py3-none-any.whl → 0.8.8__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/cli/cli.md +3 -3
- jaclang/cli/cli.py +37 -37
- jaclang/cli/cmdreg.py +45 -140
- jaclang/compiler/constant.py +0 -1
- jaclang/compiler/jac.lark +3 -6
- jaclang/compiler/larkparse/jac_parser.py +2 -2
- jaclang/compiler/parser.py +213 -34
- jaclang/compiler/passes/main/__init__.py +2 -4
- jaclang/compiler/passes/main/def_use_pass.py +0 -4
- jaclang/compiler/passes/main/predynamo_pass.py +221 -0
- jaclang/compiler/passes/main/pyast_gen_pass.py +83 -55
- jaclang/compiler/passes/main/pyast_load_pass.py +66 -40
- jaclang/compiler/passes/main/sym_tab_build_pass.py +1 -1
- jaclang/compiler/passes/main/tests/fixtures/checker/import_sym.jac +2 -0
- jaclang/compiler/passes/main/tests/fixtures/checker/import_sym_test.jac +6 -0
- jaclang/compiler/passes/main/tests/fixtures/checker/imported_sym.jac +5 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_arg_param_match.jac +37 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_arity.jac +18 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_binary_op.jac +21 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_call_expr_class.jac +12 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_cat_is_animal.jac +18 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_cyclic_symbol.jac +4 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_expr_call.jac +9 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_float.jac +7 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_import_missing_module.jac +13 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_magic_call.jac +17 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_mod_path.jac +8 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_param_types.jac +11 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_self_type.jac +9 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_sym_inherit.jac +42 -0
- jaclang/compiler/passes/main/tests/fixtures/predynamo_fix3.jac +43 -0
- jaclang/compiler/passes/main/tests/fixtures/predynamo_where_assign.jac +13 -0
- jaclang/compiler/passes/main/tests/fixtures/predynamo_where_return.jac +11 -0
- jaclang/compiler/passes/main/tests/test_checker_pass.py +265 -0
- jaclang/compiler/passes/main/tests/test_predynamo_pass.py +57 -0
- jaclang/compiler/passes/main/type_checker_pass.py +36 -61
- jaclang/compiler/passes/tool/doc_ir_gen_pass.py +204 -44
- jaclang/compiler/passes/tool/jac_formatter_pass.py +119 -69
- jaclang/compiler/passes/tool/tests/fixtures/corelib_fmt.jac +3 -3
- jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/triple_quoted_string.jac +4 -5
- jaclang/compiler/passes/tool/tests/fixtures/tagbreak.jac +171 -11
- jaclang/compiler/passes/transform.py +12 -8
- jaclang/compiler/program.py +14 -6
- jaclang/compiler/tests/fixtures/jac_import_py_files.py +4 -0
- jaclang/compiler/tests/fixtures/jac_module.jac +3 -0
- jaclang/compiler/tests/fixtures/multiple_syntax_errors.jac +10 -0
- jaclang/compiler/tests/fixtures/python_module.py +1 -0
- jaclang/compiler/tests/test_importer.py +39 -0
- jaclang/compiler/tests/test_parser.py +49 -0
- jaclang/compiler/type_system/operations.py +104 -0
- jaclang/compiler/type_system/type_evaluator.py +470 -47
- jaclang/compiler/type_system/type_utils.py +246 -0
- jaclang/compiler/type_system/types.py +58 -2
- jaclang/compiler/unitree.py +79 -94
- jaclang/langserve/engine.jac +253 -230
- jaclang/langserve/server.jac +46 -15
- jaclang/langserve/tests/fixtures/circle.jac +3 -3
- jaclang/langserve/tests/fixtures/circle_err.jac +3 -3
- jaclang/langserve/tests/fixtures/circle_pure.test.jac +3 -3
- jaclang/langserve/tests/fixtures/completion_test_err.jac +10 -0
- jaclang/langserve/tests/server_test/circle_template.jac +80 -0
- jaclang/langserve/tests/server_test/glob_template.jac +4 -0
- jaclang/langserve/tests/server_test/test_lang_serve.py +154 -312
- jaclang/langserve/tests/server_test/utils.py +153 -116
- jaclang/langserve/tests/test_dev_server.py +1 -1
- jaclang/langserve/tests/test_server.py +30 -86
- jaclang/langserve/utils.jac +56 -63
- jaclang/runtimelib/machine.py +7 -0
- jaclang/runtimelib/meta_importer.py +27 -1
- jaclang/runtimelib/tests/fixtures/custom_access_validation.jac +1 -1
- jaclang/runtimelib/tests/fixtures/savable_object.jac +2 -2
- jaclang/settings.py +18 -14
- jaclang/tests/fixtures/abc_check.jac +3 -3
- jaclang/tests/fixtures/arch_rel_import_creation.jac +12 -12
- jaclang/tests/fixtures/chandra_bugs2.jac +3 -3
- jaclang/tests/fixtures/create_dynamic_archetype.jac +13 -13
- jaclang/tests/fixtures/jac_run_py_bugs.py +18 -0
- jaclang/tests/fixtures/jac_run_py_import.py +13 -0
- jaclang/tests/fixtures/lambda_arg_annotation.jac +15 -0
- jaclang/tests/fixtures/lambda_self.jac +18 -0
- jaclang/tests/fixtures/maxfail_run_test.jac +4 -4
- jaclang/tests/fixtures/params/param_syntax_err.jac +9 -0
- jaclang/tests/fixtures/params/test_complex_params.jac +42 -0
- jaclang/tests/fixtures/params/test_failing_kwonly.jac +207 -0
- jaclang/tests/fixtures/params/test_failing_posonly.jac +116 -0
- jaclang/tests/fixtures/params/test_failing_varargs.jac +300 -0
- jaclang/tests/fixtures/params/test_kwonly_params.jac +29 -0
- jaclang/tests/fixtures/py2jac_params.py +8 -0
- jaclang/tests/fixtures/run_test.jac +4 -4
- jaclang/tests/test_cli.py +103 -18
- jaclang/tests/test_language.py +74 -16
- jaclang/utils/helpers.py +47 -2
- jaclang/utils/module_resolver.py +11 -1
- jaclang/utils/test.py +8 -0
- jaclang/utils/treeprinter.py +0 -18
- {jaclang-0.8.6.dist-info → jaclang-0.8.8.dist-info}/METADATA +3 -3
- {jaclang-0.8.6.dist-info → jaclang-0.8.8.dist-info}/RECORD +99 -62
- {jaclang-0.8.6.dist-info → jaclang-0.8.8.dist-info}/WHEEL +1 -1
- jaclang/compiler/passes/main/inheritance_pass.py +0 -131
- jaclang/langserve/dev_engine.jac +0 -645
- jaclang/langserve/dev_server.jac +0 -201
- jaclang/langserve/tests/server_test/code_test.py +0 -0
- {jaclang-0.8.6.dist-info → jaclang-0.8.8.dist-info}/entry_points.txt +0 -0
jaclang/langserve/dev_server.jac
DELETED
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
"""Jaclang Language Server."""
|
|
2
|
-
|
|
3
|
-
import from typing { Optional }
|
|
4
|
-
|
|
5
|
-
import from jaclang.compiler.constant {
|
|
6
|
-
JacSemTokenModifier as SemTokMod,
|
|
7
|
-
JacSemTokenType as SemTokType
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
import from dev_engine { JacLangServer }
|
|
11
|
-
import from jaclang.settings { settings }
|
|
12
|
-
|
|
13
|
-
import lsprotocol.types as lspt;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
with entry {
|
|
17
|
-
server = JacLangServer();
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"""Check syntax on change."""
|
|
22
|
-
@server.feature(lspt.TEXT_DOCUMENT_DID_OPEN)
|
|
23
|
-
async def did_open(ls: JacLangServerV2, params: lspt.DidOpenTextDocumentParams) -> None {
|
|
24
|
-
await ls.launch_deep_check(params.text_document.uri);
|
|
25
|
-
ls.lsp.send_request(lspt.WORKSPACE_SEMANTIC_TOKENS_REFRESH);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"""Check syntax on change."""
|
|
30
|
-
@server.feature(lspt.TEXT_DOCUMENT_DID_SAVE)
|
|
31
|
-
async def did_save(ls: JacLangServerV2, params: lspt.DidOpenTextDocumentParams) -> None {
|
|
32
|
-
file_path = params.text_document.uri;
|
|
33
|
-
quick_check_passed = await ls.launch_quick_check(file_path);
|
|
34
|
-
if not quick_check_passed {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
await ls.launch_deep_check(file_path);
|
|
38
|
-
ls.lsp.send_request(lspt.WORKSPACE_SEMANTIC_TOKENS_REFRESH);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
"""Check syntax on change."""
|
|
43
|
-
@server.feature(lspt.TEXT_DOCUMENT_DID_CHANGE)
|
|
44
|
-
async def did_change(
|
|
45
|
-
ls: JacLangServerV2,
|
|
46
|
-
params: lspt.DidChangeTextDocumentParams
|
|
47
|
-
) -> None {
|
|
48
|
-
file_path = params.text_document.uri;
|
|
49
|
-
quick_check_passed = await ls.launch_quick_check(file_path);
|
|
50
|
-
|
|
51
|
-
if quick_check_passed {
|
|
52
|
-
document = ls.workspace.get_text_document(file_path);
|
|
53
|
-
lines = document.source.splitlines();
|
|
54
|
-
sem_manager = ls.sem_managers[file_path.removeprefix('file://')];
|
|
55
|
-
sem_manager.update_sem_tokens(
|
|
56
|
-
params,sem_manager.sem_tokens,lines
|
|
57
|
-
);
|
|
58
|
-
ls.lsp.send_request(lspt.WORKSPACE_SEMANTIC_TOKENS_REFRESH);
|
|
59
|
-
await ls.launch_deep_check(file_path);
|
|
60
|
-
ls.lsp.send_request(lspt.WORKSPACE_SEMANTIC_TOKENS_REFRESH);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
"""Format the given document."""
|
|
66
|
-
@server.feature(lspt.TEXT_DOCUMENT_FORMATTING)
|
|
67
|
-
def formatting(
|
|
68
|
-
ls: JacLangServerV2,
|
|
69
|
-
params: lspt.DocumentFormattingParams
|
|
70
|
-
) -> list[lspt.TextEdit] {
|
|
71
|
-
return ls.formatted_jac(params.text_document.uri);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
"""Check syntax on file creation."""
|
|
76
|
-
@server.feature(
|
|
77
|
-
lspt.WORKSPACE_DID_CREATE_FILES,
|
|
78
|
-
lspt.FileOperationRegistrationOptions(
|
|
79
|
-
filters=[lspt.FileOperationFilter(pattern=lspt.FileOperationPattern('**/*.jac'))]
|
|
80
|
-
)
|
|
81
|
-
)
|
|
82
|
-
def did_create_files(ls: JacLangServerV2, params: lspt.CreateFilesParams) -> None {}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
"""Check syntax on file rename."""
|
|
86
|
-
@server.feature(
|
|
87
|
-
lspt.WORKSPACE_DID_RENAME_FILES,
|
|
88
|
-
lspt.FileOperationRegistrationOptions(
|
|
89
|
-
filters=[lspt.FileOperationFilter(pattern=lspt.FileOperationPattern('**/*.jac'))]
|
|
90
|
-
)
|
|
91
|
-
)
|
|
92
|
-
def did_rename_files(ls: JacLangServerV2, params: lspt.RenameFilesParams) -> None {
|
|
93
|
-
new_uris = [ file.new_uri for file in params.files ];
|
|
94
|
-
old_uris = [ file.old_uri for file in params.files ];
|
|
95
|
-
for i in range(len(new_uris)) {
|
|
96
|
-
ls.rename_module(old_uris[i], new_uris[i]);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
"""Check syntax on file delete."""
|
|
102
|
-
@server.feature(
|
|
103
|
-
lspt.WORKSPACE_DID_DELETE_FILES,
|
|
104
|
-
lspt.FileOperationRegistrationOptions(
|
|
105
|
-
filters=[lspt.FileOperationFilter(pattern=lspt.FileOperationPattern('**/*.jac'))]
|
|
106
|
-
)
|
|
107
|
-
)
|
|
108
|
-
def did_delete_files(ls: JacLangServerV2, params: lspt.DeleteFilesParams) -> None {
|
|
109
|
-
for file in params.files {
|
|
110
|
-
ls.delete_module(file.uri);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
"""Provide completion."""
|
|
116
|
-
@server.feature(
|
|
117
|
-
lspt.TEXT_DOCUMENT_COMPLETION,
|
|
118
|
-
lspt.CompletionOptions(trigger_characters=['.', ':', 'a-zA-Z0-9'])
|
|
119
|
-
)
|
|
120
|
-
def completion(ls: JacLangServerV2, params: lspt.CompletionParams) -> lspt.CompletionList {
|
|
121
|
-
return ls.get_completion(
|
|
122
|
-
params.text_document.uri,
|
|
123
|
-
params.position,
|
|
124
|
-
params.context.trigger_character if params.context else None
|
|
125
|
-
);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
"""Provide hover information for the given hover request."""
|
|
130
|
-
@server.feature(lspt.TEXT_DOCUMENT_HOVER, lspt.HoverOptions(work_done_progress=True))
|
|
131
|
-
def hover(
|
|
132
|
-
ls: JacLangServerV2,
|
|
133
|
-
params: lspt.TextDocumentPositionParams
|
|
134
|
-
) -> Optional[lspt.Hover] {
|
|
135
|
-
return ls.get_hover_info(params.text_document.uri, params.position);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
"""Provide document symbols."""
|
|
140
|
-
@server.feature(lspt.TEXT_DOCUMENT_DOCUMENT_SYMBOL)
|
|
141
|
-
def document_symbol(
|
|
142
|
-
ls: JacLangServerV2,
|
|
143
|
-
params: lspt.DocumentSymbolParams
|
|
144
|
-
) -> list[lspt.DocumentSymbol] {
|
|
145
|
-
return ls.get_outline(params.text_document.uri);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
"""Provide definition."""
|
|
150
|
-
@server.feature(lspt.TEXT_DOCUMENT_DEFINITION)
|
|
151
|
-
def definition(
|
|
152
|
-
ls: JacLangServerV2,
|
|
153
|
-
params: lspt.TextDocumentPositionParams
|
|
154
|
-
) -> Optional[lspt.Location] {
|
|
155
|
-
return ls.get_definition(params.text_document.uri, params.position);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
"""Provide references."""
|
|
160
|
-
@server.feature(lspt.TEXT_DOCUMENT_REFERENCES)
|
|
161
|
-
def references(ls: JacLangServerV2, params: lspt.ReferenceParams) -> list[lspt.Location] {
|
|
162
|
-
return ls.get_references(params.text_document.uri, params.position);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
"""Rename symbol."""
|
|
167
|
-
@server.feature(lspt.TEXT_DOCUMENT_RENAME)
|
|
168
|
-
def rename(ls: JacLangServerV2, params: lspt.RenameParams) -> Optional[lspt.WorkspaceEdit] {
|
|
169
|
-
ls.log_warning('Auto Rename is Experimental, Please use with caution.');
|
|
170
|
-
return ls.rename_symbol(params.text_document.uri, params.position, params.new_name);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
"""Provide semantic tokens."""
|
|
175
|
-
@server.feature(
|
|
176
|
-
lspt.TEXT_DOCUMENT_SEMANTIC_TOKENS_FULL,
|
|
177
|
-
lspt.SemanticTokensLegend(
|
|
178
|
-
token_types=SemTokType.as_str_list(),
|
|
179
|
-
token_modifiers=SemTokMod.as_str_list()
|
|
180
|
-
)
|
|
181
|
-
)
|
|
182
|
-
def semantic_tokens_full(
|
|
183
|
-
ls: JacLangServerV2,
|
|
184
|
-
params: lspt.SemanticTokensParams
|
|
185
|
-
) -> lspt.SemanticTokens {
|
|
186
|
-
return ls.get_semantic_tokens(params.text_document.uri);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
"""Run the language server."""
|
|
191
|
-
def run_lang_server() -> None {
|
|
192
|
-
settings.pass_timer = True;
|
|
193
|
-
server.start_io();
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
with entry {
|
|
198
|
-
if __name__ == '__main__' {
|
|
199
|
-
run_lang_server();
|
|
200
|
-
}
|
|
201
|
-
}
|
|
File without changes
|
|
File without changes
|