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.

Files changed (103) hide show
  1. jaclang/cli/cli.md +3 -3
  2. jaclang/cli/cli.py +37 -37
  3. jaclang/cli/cmdreg.py +45 -140
  4. jaclang/compiler/constant.py +0 -1
  5. jaclang/compiler/jac.lark +3 -6
  6. jaclang/compiler/larkparse/jac_parser.py +2 -2
  7. jaclang/compiler/parser.py +213 -34
  8. jaclang/compiler/passes/main/__init__.py +2 -4
  9. jaclang/compiler/passes/main/def_use_pass.py +0 -4
  10. jaclang/compiler/passes/main/predynamo_pass.py +221 -0
  11. jaclang/compiler/passes/main/pyast_gen_pass.py +83 -55
  12. jaclang/compiler/passes/main/pyast_load_pass.py +66 -40
  13. jaclang/compiler/passes/main/sym_tab_build_pass.py +1 -1
  14. jaclang/compiler/passes/main/tests/fixtures/checker/import_sym.jac +2 -0
  15. jaclang/compiler/passes/main/tests/fixtures/checker/import_sym_test.jac +6 -0
  16. jaclang/compiler/passes/main/tests/fixtures/checker/imported_sym.jac +5 -0
  17. jaclang/compiler/passes/main/tests/fixtures/checker_arg_param_match.jac +37 -0
  18. jaclang/compiler/passes/main/tests/fixtures/checker_arity.jac +18 -0
  19. jaclang/compiler/passes/main/tests/fixtures/checker_binary_op.jac +21 -0
  20. jaclang/compiler/passes/main/tests/fixtures/checker_call_expr_class.jac +12 -0
  21. jaclang/compiler/passes/main/tests/fixtures/checker_cat_is_animal.jac +18 -0
  22. jaclang/compiler/passes/main/tests/fixtures/checker_cyclic_symbol.jac +4 -0
  23. jaclang/compiler/passes/main/tests/fixtures/checker_expr_call.jac +9 -0
  24. jaclang/compiler/passes/main/tests/fixtures/checker_float.jac +7 -0
  25. jaclang/compiler/passes/main/tests/fixtures/checker_import_missing_module.jac +13 -0
  26. jaclang/compiler/passes/main/tests/fixtures/checker_magic_call.jac +17 -0
  27. jaclang/compiler/passes/main/tests/fixtures/checker_mod_path.jac +8 -0
  28. jaclang/compiler/passes/main/tests/fixtures/checker_param_types.jac +11 -0
  29. jaclang/compiler/passes/main/tests/fixtures/checker_self_type.jac +9 -0
  30. jaclang/compiler/passes/main/tests/fixtures/checker_sym_inherit.jac +42 -0
  31. jaclang/compiler/passes/main/tests/fixtures/predynamo_fix3.jac +43 -0
  32. jaclang/compiler/passes/main/tests/fixtures/predynamo_where_assign.jac +13 -0
  33. jaclang/compiler/passes/main/tests/fixtures/predynamo_where_return.jac +11 -0
  34. jaclang/compiler/passes/main/tests/test_checker_pass.py +265 -0
  35. jaclang/compiler/passes/main/tests/test_predynamo_pass.py +57 -0
  36. jaclang/compiler/passes/main/type_checker_pass.py +36 -61
  37. jaclang/compiler/passes/tool/doc_ir_gen_pass.py +204 -44
  38. jaclang/compiler/passes/tool/jac_formatter_pass.py +119 -69
  39. jaclang/compiler/passes/tool/tests/fixtures/corelib_fmt.jac +3 -3
  40. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/triple_quoted_string.jac +4 -5
  41. jaclang/compiler/passes/tool/tests/fixtures/tagbreak.jac +171 -11
  42. jaclang/compiler/passes/transform.py +12 -8
  43. jaclang/compiler/program.py +14 -6
  44. jaclang/compiler/tests/fixtures/jac_import_py_files.py +4 -0
  45. jaclang/compiler/tests/fixtures/jac_module.jac +3 -0
  46. jaclang/compiler/tests/fixtures/multiple_syntax_errors.jac +10 -0
  47. jaclang/compiler/tests/fixtures/python_module.py +1 -0
  48. jaclang/compiler/tests/test_importer.py +39 -0
  49. jaclang/compiler/tests/test_parser.py +49 -0
  50. jaclang/compiler/type_system/operations.py +104 -0
  51. jaclang/compiler/type_system/type_evaluator.py +470 -47
  52. jaclang/compiler/type_system/type_utils.py +246 -0
  53. jaclang/compiler/type_system/types.py +58 -2
  54. jaclang/compiler/unitree.py +79 -94
  55. jaclang/langserve/engine.jac +253 -230
  56. jaclang/langserve/server.jac +46 -15
  57. jaclang/langserve/tests/fixtures/circle.jac +3 -3
  58. jaclang/langserve/tests/fixtures/circle_err.jac +3 -3
  59. jaclang/langserve/tests/fixtures/circle_pure.test.jac +3 -3
  60. jaclang/langserve/tests/fixtures/completion_test_err.jac +10 -0
  61. jaclang/langserve/tests/server_test/circle_template.jac +80 -0
  62. jaclang/langserve/tests/server_test/glob_template.jac +4 -0
  63. jaclang/langserve/tests/server_test/test_lang_serve.py +154 -312
  64. jaclang/langserve/tests/server_test/utils.py +153 -116
  65. jaclang/langserve/tests/test_dev_server.py +1 -1
  66. jaclang/langserve/tests/test_server.py +30 -86
  67. jaclang/langserve/utils.jac +56 -63
  68. jaclang/runtimelib/machine.py +7 -0
  69. jaclang/runtimelib/meta_importer.py +27 -1
  70. jaclang/runtimelib/tests/fixtures/custom_access_validation.jac +1 -1
  71. jaclang/runtimelib/tests/fixtures/savable_object.jac +2 -2
  72. jaclang/settings.py +18 -14
  73. jaclang/tests/fixtures/abc_check.jac +3 -3
  74. jaclang/tests/fixtures/arch_rel_import_creation.jac +12 -12
  75. jaclang/tests/fixtures/chandra_bugs2.jac +3 -3
  76. jaclang/tests/fixtures/create_dynamic_archetype.jac +13 -13
  77. jaclang/tests/fixtures/jac_run_py_bugs.py +18 -0
  78. jaclang/tests/fixtures/jac_run_py_import.py +13 -0
  79. jaclang/tests/fixtures/lambda_arg_annotation.jac +15 -0
  80. jaclang/tests/fixtures/lambda_self.jac +18 -0
  81. jaclang/tests/fixtures/maxfail_run_test.jac +4 -4
  82. jaclang/tests/fixtures/params/param_syntax_err.jac +9 -0
  83. jaclang/tests/fixtures/params/test_complex_params.jac +42 -0
  84. jaclang/tests/fixtures/params/test_failing_kwonly.jac +207 -0
  85. jaclang/tests/fixtures/params/test_failing_posonly.jac +116 -0
  86. jaclang/tests/fixtures/params/test_failing_varargs.jac +300 -0
  87. jaclang/tests/fixtures/params/test_kwonly_params.jac +29 -0
  88. jaclang/tests/fixtures/py2jac_params.py +8 -0
  89. jaclang/tests/fixtures/run_test.jac +4 -4
  90. jaclang/tests/test_cli.py +103 -18
  91. jaclang/tests/test_language.py +74 -16
  92. jaclang/utils/helpers.py +47 -2
  93. jaclang/utils/module_resolver.py +11 -1
  94. jaclang/utils/test.py +8 -0
  95. jaclang/utils/treeprinter.py +0 -18
  96. {jaclang-0.8.6.dist-info → jaclang-0.8.8.dist-info}/METADATA +3 -3
  97. {jaclang-0.8.6.dist-info → jaclang-0.8.8.dist-info}/RECORD +99 -62
  98. {jaclang-0.8.6.dist-info → jaclang-0.8.8.dist-info}/WHEEL +1 -1
  99. jaclang/compiler/passes/main/inheritance_pass.py +0 -131
  100. jaclang/langserve/dev_engine.jac +0 -645
  101. jaclang/langserve/dev_server.jac +0 -201
  102. jaclang/langserve/tests/server_test/code_test.py +0 -0
  103. {jaclang-0.8.6.dist-info → jaclang-0.8.8.dist-info}/entry_points.txt +0 -0
@@ -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