jaclang 0.7.18__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.
- jaclang/cli/cli.py +2 -2
- jaclang/compiler/absyntree.py +1 -1
- jaclang/compiler/parser.py +1 -1
- jaclang/compiler/passes/ir_pass.py +2 -0
- jaclang/compiler/passes/main/__init__.py +1 -1
- jaclang/compiler/passes/main/fuse_typeinfo_pass.py +50 -13
- jaclang/compiler/passes/main/import_pass.py +29 -1
- jaclang/compiler/passes/main/py_collect_dep_pass.py +8 -0
- jaclang/compiler/passes/main/registry_pass.py +4 -0
- jaclang/compiler/passes/main/sym_tab_build_pass.py +0 -18
- jaclang/compiler/passes/main/tests/fixtures/mod_type_assign.jac +7 -0
- jaclang/compiler/passes/main/tests/fixtures/pygame_mock/__init__.pyi +3 -0
- jaclang/compiler/passes/main/tests/test_import_pass.py +10 -10
- jaclang/compiler/passes/main/tests/test_type_check_pass.py +1 -1
- jaclang/compiler/passes/main/tests/test_typeinfo_pass.py +23 -1
- jaclang/compiler/passes/main/type_check_pass.py +4 -4
- jaclang/compiler/passes/tool/jac_formatter_pass.py +58 -30
- jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/line_spacing.jac +57 -0
- jaclang/compiler/semtable.py +4 -4
- jaclang/compiler/symtable.py +5 -0
- jaclang/langserve/engine.py +68 -7
- jaclang/langserve/tests/test_server.py +3 -3
- jaclang/langserve/utils.py +0 -113
- jaclang/plugin/tests/test_jaseci.py +23 -4
- jaclang/runtimelib/importer.py +3 -0
- jaclang/runtimelib/machine.py +45 -3
- jaclang/runtimelib/memory.py +1 -1
- jaclang/settings.py +4 -0
- jaclang/stubs/jaclang/__init__.pyi +5 -0
- jaclang/stubs/jaclang/cli/__init__.pyi +0 -0
- jaclang/stubs/jaclang/cli/cli.pyi +58 -0
- jaclang/stubs/jaclang/cli/cmdreg.pyi +32 -0
- jaclang/stubs/jaclang/compiler/__init__.pyi +6 -0
- jaclang/stubs/jaclang/compiler/absyntree.pyi +1248 -0
- jaclang/stubs/jaclang/compiler/codeloc.pyi +45 -0
- jaclang/stubs/jaclang/compiler/compile.pyi +29 -0
- jaclang/stubs/jaclang/compiler/constant.pyi +287 -0
- jaclang/stubs/jaclang/compiler/generated/__init__.pyi +0 -0
- jaclang/stubs/jaclang/compiler/generated/jac_parser.pyi +898 -0
- jaclang/stubs/jaclang/compiler/parser.pyi +266 -0
- jaclang/stubs/jaclang/compiler/passes/__init__.pyi +3 -0
- jaclang/stubs/jaclang/compiler/passes/ir_pass.pyi +40 -0
- jaclang/stubs/jaclang/compiler/passes/main/__init__.pyi +27 -0
- jaclang/stubs/jaclang/compiler/passes/main/access_modifier_pass.pyi +23 -0
- jaclang/stubs/jaclang/compiler/passes/main/def_impl_match_pass.pyi +12 -0
- jaclang/stubs/jaclang/compiler/passes/main/def_use_pass.pyi +31 -0
- jaclang/stubs/jaclang/compiler/passes/main/fuse_typeinfo_pass.pyi +66 -0
- jaclang/stubs/jaclang/compiler/passes/main/import_pass.pyi +34 -0
- jaclang/stubs/jaclang/compiler/passes/main/pyast_gen_pass.pyi +178 -0
- jaclang/stubs/jaclang/compiler/passes/main/pyast_load_pass.pyi +135 -0
- jaclang/stubs/jaclang/compiler/passes/main/pybc_gen_pass.pyi +6 -0
- jaclang/stubs/jaclang/compiler/passes/main/pyjac_ast_link_pass.pyi +22 -0
- jaclang/stubs/jaclang/compiler/passes/main/pyout_pass.pyi +9 -0
- jaclang/stubs/jaclang/compiler/passes/main/registry_pass.pyi +15 -0
- jaclang/stubs/jaclang/compiler/passes/main/schedules.pyi +19 -0
- jaclang/stubs/jaclang/compiler/passes/main/sub_node_tab_pass.pyi +6 -0
- jaclang/stubs/jaclang/compiler/passes/main/sym_tab_build_pass.pyi +147 -0
- jaclang/stubs/jaclang/compiler/passes/main/type_check_pass.pyi +11 -0
- jaclang/stubs/jaclang/compiler/passes/tool/__init__.pyi +4 -0
- jaclang/stubs/jaclang/compiler/passes/tool/fuse_comments_pass.pyi +12 -0
- jaclang/stubs/jaclang/compiler/passes/tool/jac_formatter_pass.pyi +134 -0
- jaclang/stubs/jaclang/compiler/passes/tool/schedules.pyi +11 -0
- jaclang/stubs/jaclang/compiler/passes/transform.pyi +28 -0
- jaclang/stubs/jaclang/compiler/passes/utils/__init__.pyi +0 -0
- jaclang/stubs/jaclang/compiler/passes/utils/mypy_ast_build.pyi +151 -0
- jaclang/stubs/jaclang/compiler/semtable.pyi +35 -0
- jaclang/stubs/jaclang/compiler/symtable.pyi +65 -0
- jaclang/stubs/jaclang/langserve/__init__.pyi +0 -0
- jaclang/stubs/jaclang/langserve/engine.pyi +73 -0
- jaclang/stubs/jaclang/langserve/sem_manager.pyi +89 -0
- jaclang/stubs/jaclang/langserve/server.pyi +38 -0
- jaclang/stubs/jaclang/langserve/utils.pyi +55 -0
- jaclang/stubs/jaclang/plugin/__init__.pyi +3 -0
- jaclang/stubs/jaclang/plugin/builtin.pyi +12 -0
- jaclang/stubs/jaclang/plugin/default.pyi +202 -0
- jaclang/stubs/jaclang/plugin/feature.pyi +176 -0
- jaclang/stubs/jaclang/plugin/spec.pyi +181 -0
- jaclang/stubs/jaclang/runtimelib/__init__.pyi +0 -0
- jaclang/stubs/jaclang/runtimelib/architype.pyi +133 -0
- jaclang/stubs/jaclang/runtimelib/constructs.pyi +41 -0
- jaclang/stubs/jaclang/runtimelib/context.pyi +48 -0
- jaclang/stubs/jaclang/runtimelib/importer.pyi +104 -0
- jaclang/stubs/jaclang/runtimelib/machine.pyi +6 -0
- jaclang/stubs/jaclang/runtimelib/memory.pyi +26 -0
- jaclang/stubs/jaclang/runtimelib/utils.pyi +35 -0
- jaclang/stubs/jaclang/settings.pyi +35 -0
- jaclang/stubs/jaclang/utils/__init__.pyi +0 -0
- jaclang/stubs/jaclang/utils/helpers.pyi +18 -0
- jaclang/stubs/jaclang/utils/lang_tools.pyi +43 -0
- jaclang/stubs/jaclang/utils/log.pyi +3 -0
- jaclang/stubs/jaclang/utils/treeprinter.pyi +47 -0
- jaclang/tests/fixtures/bar.jac +1 -1
- jaclang/tests/fixtures/builtins_test.jac +16 -0
- jaclang/tests/fixtures/foo.jac +0 -1
- jaclang/tests/fixtures/match_multi_ex.jac +12 -0
- jaclang/tests/fixtures/walker_update.jac +19 -0
- jaclang/tests/test_cli.py +29 -2
- jaclang/tests/test_language.py +70 -2
- jaclang/utils/treeprinter.py +1 -1
- {jaclang-0.7.18.dist-info → jaclang-0.7.20.dist-info}/METADATA +4 -2
- {jaclang-0.7.18.dist-info → jaclang-0.7.20.dist-info}/RECORD +103 -34
- {jaclang-0.7.18.dist-info → jaclang-0.7.20.dist-info}/WHEEL +0 -0
- {jaclang-0.7.18.dist-info → jaclang-0.7.20.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import jaclang.compiler.absyntree as ast
|
|
2
|
+
from _typeshed import Incomplete
|
|
3
|
+
from jaclang.compiler.absyntree import AstNode as AstNode
|
|
4
|
+
from jaclang.compiler.passes import Pass as Pass
|
|
5
|
+
from jaclang.settings import settings as settings
|
|
6
|
+
|
|
7
|
+
class JacFormatPass(Pass):
|
|
8
|
+
comments: Incomplete
|
|
9
|
+
indent_size: int
|
|
10
|
+
indent_level: int
|
|
11
|
+
MAX_LINE_LENGTH: Incomplete
|
|
12
|
+
def before_pass(self) -> None: ...
|
|
13
|
+
def enter_node(self, node: ast.AstNode) -> None: ...
|
|
14
|
+
def token_before(self, node: ast.Token) -> ast.Token | None: ...
|
|
15
|
+
def token_after(self, node: ast.Token) -> ast.Token | None: ...
|
|
16
|
+
def indent_str(self) -> str: ...
|
|
17
|
+
def emit(self, node: ast.AstNode, s: str, strip_mode: bool = True) -> None: ...
|
|
18
|
+
def emit_ln(self, node: ast.AstNode, s: str) -> None: ...
|
|
19
|
+
def comma_sep_node_list(self, node: ast.SubNodeList) -> str: ...
|
|
20
|
+
def dot_sep_node_list(self, node: ast.SubNodeList) -> str: ...
|
|
21
|
+
def nl_sep_node_list(self, node: ast.SubNodeList) -> str: ...
|
|
22
|
+
def sep_node_list(self, node: ast.SubNodeList, delim: str = " ") -> str: ...
|
|
23
|
+
def enter_module(self, node: ast.Module) -> None: ...
|
|
24
|
+
def exit_module(self, node: ast.Module) -> None: ...
|
|
25
|
+
def exit_global_vars(self, node: ast.GlobalVars) -> None: ...
|
|
26
|
+
def exit_module_code(self, node: ast.ModuleCode) -> None: ...
|
|
27
|
+
def exit_sub_node_list(self, node: ast.SubNodeList) -> None: ...
|
|
28
|
+
def exit_sub_tag(self, node: ast.SubTag) -> None: ...
|
|
29
|
+
def exit_func_call(self, node: ast.FuncCall) -> None: ...
|
|
30
|
+
def exit_multi_string(self, node: ast.MultiString) -> None: ...
|
|
31
|
+
def exit_module_path(self, node: ast.ModulePath) -> None: ...
|
|
32
|
+
def exit_tuple_val(self, node: ast.TupleVal) -> None: ...
|
|
33
|
+
def exit_special_var_ref(self, node: ast.SpecialVarRef) -> None: ...
|
|
34
|
+
def exit_ability_def(self, node: ast.AbilityDef) -> None: ...
|
|
35
|
+
def exit_event_signature(self, node: ast.EventSignature) -> None: ...
|
|
36
|
+
def exit_import(self, node: ast.Import) -> None: ...
|
|
37
|
+
def exit_arch_def(self, node: ast.ArchDef) -> None: ...
|
|
38
|
+
def exit_ability(self, node: ast.Ability) -> None: ...
|
|
39
|
+
def exit_func_signature(self, node: ast.FuncSignature) -> None: ...
|
|
40
|
+
def exit_arch_has(self, node: ast.ArchHas) -> None: ...
|
|
41
|
+
def exit_arch_ref(self, node: ast.ArchRef) -> None: ...
|
|
42
|
+
def exit_param_var(self, node: ast.ParamVar) -> None: ...
|
|
43
|
+
def exit_enum(self, node: ast.Enum) -> None: ...
|
|
44
|
+
def exit_enum_def(self, node: ast.EnumDef) -> None: ...
|
|
45
|
+
def exit_atom_trailer(self, node: ast.AtomTrailer) -> None: ...
|
|
46
|
+
def exit_atom_unit(self, node: ast.AtomUnit) -> None: ...
|
|
47
|
+
def exit_yield_expr(self, node: ast.YieldExpr) -> None: ...
|
|
48
|
+
def is_line_break_needed(self, content: str, max_line_length: int = 0) -> bool: ...
|
|
49
|
+
def exit_binary_expr(self, node: ast.BinaryExpr) -> None: ...
|
|
50
|
+
def exit_compare_expr(self, node: ast.CompareExpr) -> None: ...
|
|
51
|
+
def exit_has_var(self, node: ast.HasVar) -> None: ...
|
|
52
|
+
def exit_if_stmt(self, node: ast.IfStmt) -> None: ...
|
|
53
|
+
def exit_else_if(self, node: ast.ElseIf) -> None: ...
|
|
54
|
+
def exit_disengage_stmt(self, node: ast.DisengageStmt) -> None: ...
|
|
55
|
+
def exit_else_stmt(self, node: ast.ElseStmt) -> None: ...
|
|
56
|
+
def exit_expr_stmt(self, node: ast.ExprStmt) -> None: ...
|
|
57
|
+
def exit_iter_for_stmt(self, node: ast.IterForStmt) -> None: ...
|
|
58
|
+
def exit_try_stmt(self, node: ast.TryStmt) -> None: ...
|
|
59
|
+
def exit_except(self, node: ast.Except) -> None: ...
|
|
60
|
+
def exit_finally_stmt(self, node: ast.FinallyStmt) -> None: ...
|
|
61
|
+
def exit_while_stmt(self, node: ast.WhileStmt) -> None: ...
|
|
62
|
+
def exit_with_stmt(self, node: ast.WithStmt) -> None: ...
|
|
63
|
+
def exit_module_item(self, node: ast.ModuleItem) -> None: ...
|
|
64
|
+
def exit_global_stmt(self, node: ast.GlobalStmt) -> None: ...
|
|
65
|
+
def exit_non_local_stmt(self, node: ast.GlobalStmt) -> None: ...
|
|
66
|
+
def handle_long_assignment(
|
|
67
|
+
self, node: ast.Assignment, kid: ast.AstNode
|
|
68
|
+
) -> None: ...
|
|
69
|
+
def handle_long_expression(self, node: ast.AstNode, kid: ast.AstNode) -> None: ...
|
|
70
|
+
def exit_assignment(self, node: ast.Assignment) -> None: ...
|
|
71
|
+
def exit_architype(self, node: ast.Architype) -> None: ...
|
|
72
|
+
def exit_f_string(self, node: ast.FString) -> None: ...
|
|
73
|
+
def exit_if_else_expr(self, node: ast.IfElseExpr) -> None: ...
|
|
74
|
+
def decl_def_missing(self, decl: str = "this") -> None: ...
|
|
75
|
+
def exit_bool_expr(self, node: ast.BoolExpr) -> None: ...
|
|
76
|
+
def exit_lambda_expr(self, node: ast.LambdaExpr) -> None: ...
|
|
77
|
+
def exit_unary_expr(self, node: ast.UnaryExpr) -> None: ...
|
|
78
|
+
def exit_raise_stmt(self, node: ast.RaiseStmt) -> None: ...
|
|
79
|
+
def exit_edge_ref_trailer(self, node: ast.EdgeRefTrailer) -> None: ...
|
|
80
|
+
def exit_edge_op_ref(self, node: ast.EdgeOpRef) -> None: ...
|
|
81
|
+
def exit_index_slice(self, node: ast.IndexSlice) -> None: ...
|
|
82
|
+
def exit_list_val(self, node: ast.ListVal) -> None: ...
|
|
83
|
+
def exit_set_val(self, node: ast.ListVal) -> None: ...
|
|
84
|
+
def exit_dict_val(self, node: ast.DictVal) -> None: ...
|
|
85
|
+
def exit_inner_compr(self, node: ast.InnerCompr) -> None: ...
|
|
86
|
+
def exit_list_compr(self, node: ast.ListCompr) -> None: ...
|
|
87
|
+
def exit_gen_compr(self, node: ast.GenCompr) -> None: ...
|
|
88
|
+
def exit_set_compr(self, node: ast.SetCompr) -> None: ...
|
|
89
|
+
def exit_dict_compr(self, node: ast.DictCompr) -> None: ...
|
|
90
|
+
def exit_k_v_pair(self, node: ast.KVPair) -> None: ...
|
|
91
|
+
def exit_k_w_pair(self, node: ast.KWPair) -> None: ...
|
|
92
|
+
def exit_disconnect_op(self, node: ast.DisconnectOp) -> None: ...
|
|
93
|
+
def exit_connect_op(self, node: ast.ConnectOp) -> None: ...
|
|
94
|
+
def exit_filter_compr(self, node: ast.FilterCompr) -> None: ...
|
|
95
|
+
def exit_assign_compr(self, node: ast.AssignCompr) -> None: ...
|
|
96
|
+
def exit_await_expr(self, node: ast.AwaitExpr) -> None: ...
|
|
97
|
+
def exit_revisit_stmt(self, node: ast.RevisitStmt) -> None: ...
|
|
98
|
+
def exit_visit_stmt(self, node: ast.VisitStmt) -> None: ...
|
|
99
|
+
def exit_ignore_stmt(self, node: ast.IgnoreStmt) -> None: ...
|
|
100
|
+
def exit_return_stmt(self, node: ast.ReturnStmt) -> None: ...
|
|
101
|
+
def exit_assert_stmt(self, node: ast.AssertStmt) -> None: ...
|
|
102
|
+
def exit_check_stmt(self, node: ast.CheckStmt) -> None: ...
|
|
103
|
+
def exit_ctrl_stmt(self, node: ast.CtrlStmt) -> None: ...
|
|
104
|
+
def exit_delete_stmt(self, node: ast.DeleteStmt) -> None: ...
|
|
105
|
+
def exit_report_stmt(self, node: ast.ReportStmt) -> None: ...
|
|
106
|
+
def exit_expr_as_item(self, node: ast.ExprAsItem) -> None: ...
|
|
107
|
+
def exit_in_for_stmt(self, node: ast.InForStmt) -> None: ...
|
|
108
|
+
def exit_test(self, node: ast.Test) -> None: ...
|
|
109
|
+
def exit_py_inline_code(self, node: ast.PyInlineCode) -> None: ...
|
|
110
|
+
def exit_arch_ref_chain(self, node: ast.ArchRefChain) -> None: ...
|
|
111
|
+
def exit_typed_ctx_block(self, node: ast.TypedCtxBlock) -> None: ...
|
|
112
|
+
def exit_match_stmt(self, node: ast.MatchStmt) -> None: ...
|
|
113
|
+
def exit_match_case(self, node: ast.MatchCase) -> None: ...
|
|
114
|
+
def exit_match_or(self, node: ast.MatchOr) -> None: ...
|
|
115
|
+
def exit_match_as(self, node: ast.MatchAs) -> None: ...
|
|
116
|
+
def exit_match_wild(self, node: ast.MatchWild) -> None: ...
|
|
117
|
+
def exit_match_value(self, node: ast.MatchValue) -> None: ...
|
|
118
|
+
def exit_match_singleton(self, node: ast.MatchSingleton) -> None: ...
|
|
119
|
+
def exit_match_sequence(self, node: ast.MatchSequence) -> None: ...
|
|
120
|
+
def exit_match_mapping(self, node: ast.MatchMapping) -> None: ...
|
|
121
|
+
def exit_match_k_v_pair(self, node: ast.MatchKVPair) -> None: ...
|
|
122
|
+
def exit_match_star(self, node: ast.MatchStar) -> None: ...
|
|
123
|
+
def exit_match_arch(self, node: ast.MatchArch) -> None: ...
|
|
124
|
+
def exit_token(self, node: ast.Token) -> None: ...
|
|
125
|
+
def exit_name(self, node: ast.Name) -> None: ...
|
|
126
|
+
def enter_float(self, node: ast.Float) -> None: ...
|
|
127
|
+
def enter_int(self, node: ast.Int) -> None: ...
|
|
128
|
+
def enter_string(self, node: ast.String) -> None: ...
|
|
129
|
+
def enter_bool(self, node: ast.Bool) -> None: ...
|
|
130
|
+
def exit_builtin_type(self, node: ast.BuiltinType) -> None: ...
|
|
131
|
+
def exit_null(self, node: ast.Null) -> None: ...
|
|
132
|
+
def exit_ellipsis(self, node: ast.Ellipsis) -> None: ...
|
|
133
|
+
def exit_semi(self, node: ast.Semi) -> None: ...
|
|
134
|
+
def exit_comment_token(self, node: ast.CommentToken) -> None: ...
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from jaclang.compiler.passes.ir_pass import Pass
|
|
2
|
+
from jaclang.compiler.passes.tool.fuse_comments_pass import (
|
|
3
|
+
FuseCommentsPass as FuseCommentsPass,
|
|
4
|
+
)
|
|
5
|
+
from jaclang.compiler.passes.tool.jac_formatter_pass import (
|
|
6
|
+
JacFormatPass as JacFormatPass,
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
__all__ = ["FuseCommentsPass", "JacFormatPass", "format_pass"]
|
|
10
|
+
|
|
11
|
+
format_pass: list[type[Pass]]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import abc
|
|
2
|
+
from _typeshed import Incomplete
|
|
3
|
+
from abc import ABC, abstractmethod
|
|
4
|
+
from jaclang.compiler.absyntree import AstNode as AstNode, T as T
|
|
5
|
+
from jaclang.compiler.codeloc import CodeLocInfo as CodeLocInfo
|
|
6
|
+
from jaclang.utils.log import logging as logging
|
|
7
|
+
from typing import Generic
|
|
8
|
+
|
|
9
|
+
class Alert:
|
|
10
|
+
msg: Incomplete
|
|
11
|
+
loc: Incomplete
|
|
12
|
+
from_pass: Incomplete
|
|
13
|
+
def __init__(
|
|
14
|
+
self, msg: str, loc: CodeLocInfo, from_pass: type[Transform]
|
|
15
|
+
) -> None: ...
|
|
16
|
+
|
|
17
|
+
class Transform(ABC, Generic[T], metaclass=abc.ABCMeta):
|
|
18
|
+
logger: Incomplete
|
|
19
|
+
errors_had: Incomplete
|
|
20
|
+
warnings_had: Incomplete
|
|
21
|
+
cur_node: Incomplete
|
|
22
|
+
ir: Incomplete
|
|
23
|
+
def __init__(self, input_ir: T, prior: Transform | None = None) -> None: ...
|
|
24
|
+
@abstractmethod
|
|
25
|
+
def transform(self, ir: T) -> AstNode: ...
|
|
26
|
+
def log_error(self, msg: str, node_override: AstNode | None = None) -> None: ...
|
|
27
|
+
def log_warning(self, msg: str, node_override: AstNode | None = None) -> None: ...
|
|
28
|
+
def log_info(self, msg: str) -> None: ...
|
|
File without changes
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import ast
|
|
2
|
+
import mypy.build as myb
|
|
3
|
+
import mypy.checkexpr as mycke
|
|
4
|
+
import mypy.errors as mye
|
|
5
|
+
import mypy.fastparse as myfp
|
|
6
|
+
from _typeshed import Incomplete
|
|
7
|
+
from jaclang.compiler.passes import Pass
|
|
8
|
+
from mypy.build import (
|
|
9
|
+
BuildSource as BuildSource,
|
|
10
|
+
BuildSourceSet as BuildSourceSet,
|
|
11
|
+
FileSystemCache as FileSystemCache,
|
|
12
|
+
Graph,
|
|
13
|
+
compute_search_paths as compute_search_paths,
|
|
14
|
+
load_plugins as load_plugins,
|
|
15
|
+
process_graph as process_graph,
|
|
16
|
+
)
|
|
17
|
+
from mypy.options import Options as Options
|
|
18
|
+
from mypy.semanal_main import semantic_analysis_for_scc as semantic_analysis_for_scc
|
|
19
|
+
|
|
20
|
+
__all__ = [
|
|
21
|
+
"BuildManager",
|
|
22
|
+
"State",
|
|
23
|
+
"BuildSource",
|
|
24
|
+
"BuildSourceSet",
|
|
25
|
+
"FileSystemCache",
|
|
26
|
+
"compute_search_paths",
|
|
27
|
+
"load_graph",
|
|
28
|
+
"load_plugins",
|
|
29
|
+
"process_graph",
|
|
30
|
+
"Errors",
|
|
31
|
+
"Options",
|
|
32
|
+
"ASTConverter",
|
|
33
|
+
"semantic_analysis_for_scc",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
class BuildManager(myb.BuildManager):
|
|
37
|
+
def parse_file(
|
|
38
|
+
self,
|
|
39
|
+
id: str,
|
|
40
|
+
path: str,
|
|
41
|
+
source: str,
|
|
42
|
+
ignore_errors: bool,
|
|
43
|
+
options: myb.Options,
|
|
44
|
+
ast_override: myb.MypyFile | None = None,
|
|
45
|
+
) -> myb.MypyFile: ...
|
|
46
|
+
|
|
47
|
+
class ExpressionChecker(mycke.ExpressionChecker):
|
|
48
|
+
def __init__(
|
|
49
|
+
self,
|
|
50
|
+
tc: mycke.mypy.checker.TypeChecker,
|
|
51
|
+
msg: mycke.MessageBuilder,
|
|
52
|
+
plugin: mycke.Plugin,
|
|
53
|
+
per_line_checking_time_ns: dict[int, int],
|
|
54
|
+
) -> None: ...
|
|
55
|
+
def visit_list_expr(self, e: mycke.ListExpr) -> mycke.Type: ...
|
|
56
|
+
def visit_set_expr(self, e: mycke.SetExpr) -> mycke.Type: ...
|
|
57
|
+
def visit_tuple_expr(self, e: myfp.TupleExpr) -> myb.Type: ...
|
|
58
|
+
def visit_dict_expr(self, e: myfp.DictExpr) -> myb.Type: ...
|
|
59
|
+
def visit_list_comprehension(self, e: myfp.ListComprehension) -> myb.Type: ...
|
|
60
|
+
def visit_set_comprehension(self, e: myfp.SetComprehension) -> myb.Type: ...
|
|
61
|
+
def visit_generator_expr(self, e: myfp.GeneratorExpr) -> myb.Type: ...
|
|
62
|
+
def visit_dictionary_comprehension(
|
|
63
|
+
self, e: myfp.DictionaryComprehension
|
|
64
|
+
) -> myb.Type: ...
|
|
65
|
+
def visit_member_expr(
|
|
66
|
+
self, e: myfp.MemberExpr, is_lvalue: bool = False
|
|
67
|
+
) -> myb.Type: ...
|
|
68
|
+
|
|
69
|
+
class State(myb.State):
|
|
70
|
+
manager: BuildManager
|
|
71
|
+
tree: myb.MypyFile | None
|
|
72
|
+
order: Incomplete
|
|
73
|
+
caller_state: Incomplete
|
|
74
|
+
caller_line: Incomplete
|
|
75
|
+
import_context: Incomplete
|
|
76
|
+
id: Incomplete
|
|
77
|
+
options: Incomplete
|
|
78
|
+
early_errors: Incomplete
|
|
79
|
+
ignore_all: bool
|
|
80
|
+
path: Incomplete
|
|
81
|
+
abspath: Incomplete
|
|
82
|
+
xpath: Incomplete
|
|
83
|
+
meta: Incomplete
|
|
84
|
+
interface_hash: Incomplete
|
|
85
|
+
meta_source_hash: Incomplete
|
|
86
|
+
source: Incomplete
|
|
87
|
+
per_line_checking_time_ns: Incomplete
|
|
88
|
+
dependencies: Incomplete
|
|
89
|
+
dependencies_set: Incomplete
|
|
90
|
+
suppressed: Incomplete
|
|
91
|
+
suppressed_set: Incomplete
|
|
92
|
+
priorities: Incomplete
|
|
93
|
+
dep_line_map: Incomplete
|
|
94
|
+
def __init__(
|
|
95
|
+
self,
|
|
96
|
+
id: str | None,
|
|
97
|
+
path: str | None,
|
|
98
|
+
source: str | None,
|
|
99
|
+
manager: BuildManager,
|
|
100
|
+
caller_state: myb.State | None = None,
|
|
101
|
+
caller_line: int = 0,
|
|
102
|
+
ancestor_for: myb.State | None = None,
|
|
103
|
+
root_source: bool = False,
|
|
104
|
+
temporary: bool = False,
|
|
105
|
+
ast_override: myb.MypyFile | None = None,
|
|
106
|
+
) -> None: ...
|
|
107
|
+
def type_checker(self) -> myb.TypeChecker: ...
|
|
108
|
+
source_hash: Incomplete
|
|
109
|
+
def parse_file(
|
|
110
|
+
self, *, temporary: bool = False, ast_override: myb.MypyFile | None = None
|
|
111
|
+
) -> None: ...
|
|
112
|
+
|
|
113
|
+
class ASTConverter(myfp.ASTConverter):
|
|
114
|
+
def visit(self, node: ast.AST | None) -> myfp.Any: ...
|
|
115
|
+
def make_argument(
|
|
116
|
+
self,
|
|
117
|
+
arg: ast.arg,
|
|
118
|
+
default: ast.expr | None,
|
|
119
|
+
kind: myfp.ArgKind,
|
|
120
|
+
no_type_check: bool,
|
|
121
|
+
pos_only: bool = False,
|
|
122
|
+
) -> myfp.Argument: ...
|
|
123
|
+
def link_mypy_to_jac_node(self, node: ast.AST, ret: myfp.Any) -> None: ...
|
|
124
|
+
|
|
125
|
+
class Errors(mye.Errors):
|
|
126
|
+
cur_pass: Incomplete
|
|
127
|
+
def __init__(self, cur_pass: Pass, *args, **kwargs) -> None: ...
|
|
128
|
+
def report(
|
|
129
|
+
self,
|
|
130
|
+
line: int,
|
|
131
|
+
column: int | None,
|
|
132
|
+
message: str,
|
|
133
|
+
code: mye.ErrorCode | None = None,
|
|
134
|
+
*,
|
|
135
|
+
blocker: bool = False,
|
|
136
|
+
severity: str = "error",
|
|
137
|
+
file: str | None = None,
|
|
138
|
+
only_once: bool = False,
|
|
139
|
+
allow_dups: bool = False,
|
|
140
|
+
origin_span: mye.Iterable[int] | None = None,
|
|
141
|
+
offset: int = 0,
|
|
142
|
+
end_line: int | None = None,
|
|
143
|
+
end_column: int | None = None
|
|
144
|
+
) -> None: ...
|
|
145
|
+
|
|
146
|
+
def load_graph(
|
|
147
|
+
sources: list[BuildSource],
|
|
148
|
+
manager: BuildManager,
|
|
149
|
+
old_graph: Graph | None = None,
|
|
150
|
+
new_modules: list[State] | None = None,
|
|
151
|
+
) -> Graph: ...
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
|
|
3
|
+
class SemInfo:
|
|
4
|
+
name: Incomplete
|
|
5
|
+
type: Incomplete
|
|
6
|
+
semstr: Incomplete
|
|
7
|
+
def __init__(
|
|
8
|
+
self, name: str, type: str | None = None, semstr: str = ""
|
|
9
|
+
) -> None: ...
|
|
10
|
+
|
|
11
|
+
class SemScope:
|
|
12
|
+
parent: Incomplete
|
|
13
|
+
type: Incomplete
|
|
14
|
+
scope: Incomplete
|
|
15
|
+
def __init__(
|
|
16
|
+
self, scope: str, type: str, parent: SemScope | None = None
|
|
17
|
+
) -> None: ...
|
|
18
|
+
@staticmethod
|
|
19
|
+
def get_scope_from_str(scope_str: str) -> SemScope | None: ...
|
|
20
|
+
@property
|
|
21
|
+
def as_type_str(self) -> str | None: ...
|
|
22
|
+
|
|
23
|
+
class SemRegistry:
|
|
24
|
+
registry: Incomplete
|
|
25
|
+
def __init__(self) -> None: ...
|
|
26
|
+
def add(self, scope: SemScope, seminfo: SemInfo) -> None: ...
|
|
27
|
+
def lookup(
|
|
28
|
+
self,
|
|
29
|
+
scope: SemScope | None = None,
|
|
30
|
+
name: str | None = None,
|
|
31
|
+
type: str | None = None,
|
|
32
|
+
) -> tuple[SemScope | None, SemInfo | list[SemInfo] | None]: ...
|
|
33
|
+
@property
|
|
34
|
+
def module_scope(self) -> SemScope: ...
|
|
35
|
+
def pp(self) -> str: ...
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import jaclang.compiler.absyntree as ast
|
|
2
|
+
from _typeshed import Incomplete
|
|
3
|
+
from jaclang.compiler.constant import (
|
|
4
|
+
SymbolAccess as SymbolAccess,
|
|
5
|
+
SymbolType as SymbolType,
|
|
6
|
+
)
|
|
7
|
+
from typing import Sequence
|
|
8
|
+
|
|
9
|
+
__all__ = ["Symbol", "SymbolTable", "SymbolType", "SymbolAccess"]
|
|
10
|
+
|
|
11
|
+
class Symbol:
|
|
12
|
+
defn: Incomplete
|
|
13
|
+
uses: Incomplete
|
|
14
|
+
access: Incomplete
|
|
15
|
+
parent_tab: Incomplete
|
|
16
|
+
def __init__(
|
|
17
|
+
self, defn: ast.NameAtom, access: SymbolAccess, parent_tab: SymbolTable
|
|
18
|
+
) -> None: ...
|
|
19
|
+
@property
|
|
20
|
+
def decl(self) -> ast.NameAtom: ...
|
|
21
|
+
@property
|
|
22
|
+
def sym_name(self) -> str: ...
|
|
23
|
+
@property
|
|
24
|
+
def sym_type(self) -> SymbolType: ...
|
|
25
|
+
@property
|
|
26
|
+
def sym_dotted_name(self) -> str: ...
|
|
27
|
+
def add_defn(self, node: ast.NameAtom) -> None: ...
|
|
28
|
+
def add_use(self, node: ast.NameAtom) -> None: ...
|
|
29
|
+
|
|
30
|
+
class SymbolTable:
|
|
31
|
+
name: Incomplete
|
|
32
|
+
owner: Incomplete
|
|
33
|
+
parent: Incomplete
|
|
34
|
+
kid: Incomplete
|
|
35
|
+
tab: Incomplete
|
|
36
|
+
inherit: Incomplete
|
|
37
|
+
def __init__(
|
|
38
|
+
self, name: str, owner: ast.AstNode, parent: SymbolTable | None = None
|
|
39
|
+
) -> None: ...
|
|
40
|
+
def get_parent(self) -> SymbolTable | None: ...
|
|
41
|
+
def lookup(self, name: str, deep: bool = True) -> Symbol | None: ...
|
|
42
|
+
def insert(
|
|
43
|
+
self,
|
|
44
|
+
node: ast.AstSymbolNode,
|
|
45
|
+
access_spec: ast.AstAccessNode | None | SymbolAccess = None,
|
|
46
|
+
single: bool = False,
|
|
47
|
+
) -> ast.AstNode | None: ...
|
|
48
|
+
def find_scope(self, name: str) -> SymbolTable | None: ...
|
|
49
|
+
def push_scope(self, name: str, key_node: ast.AstNode) -> SymbolTable: ...
|
|
50
|
+
def inherit_sym_tab(self, target_sym_tab: SymbolTable) -> None: ...
|
|
51
|
+
def def_insert(
|
|
52
|
+
self,
|
|
53
|
+
node: ast.AstSymbolNode,
|
|
54
|
+
access_spec: ast.AstAccessNode | None | SymbolAccess = None,
|
|
55
|
+
single_decl: str | None = None,
|
|
56
|
+
) -> Symbol | None: ...
|
|
57
|
+
def chain_def_insert(self, node_list: list[ast.AstSymbolNode]) -> None: ...
|
|
58
|
+
def use_lookup(
|
|
59
|
+
self, node: ast.AstSymbolNode, sym_table: SymbolTable | None = None
|
|
60
|
+
) -> Symbol | None: ...
|
|
61
|
+
def chain_use_lookup(self, node_list: Sequence[ast.AstSymbolNode]) -> None: ...
|
|
62
|
+
def update_py_ctx_for_def(self, node: ast.AstSymbolNode) -> None: ...
|
|
63
|
+
def inherit_baseclasses_sym(self, node: ast.Architype | ast.Enum) -> None: ...
|
|
64
|
+
def pp(self, depth: int | None = None) -> str: ...
|
|
65
|
+
def dotgen(self) -> str: ...
|
|
File without changes
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import jaclang.compiler.absyntree as ast
|
|
2
|
+
import lsprotocol.types as lspt
|
|
3
|
+
from _typeshed import Incomplete
|
|
4
|
+
from jaclang.compiler.compile import jac_str_to_pass as jac_str_to_pass
|
|
5
|
+
from jaclang.compiler.parser import JacParser as JacParser
|
|
6
|
+
from jaclang.compiler.passes import Pass as Pass
|
|
7
|
+
from jaclang.compiler.passes.main.schedules import (
|
|
8
|
+
py_code_gen_typed as py_code_gen_typed,
|
|
9
|
+
)
|
|
10
|
+
from jaclang.compiler.passes.tool import (
|
|
11
|
+
FuseCommentsPass as FuseCommentsPass,
|
|
12
|
+
JacFormatPass as JacFormatPass,
|
|
13
|
+
)
|
|
14
|
+
from jaclang.langserve.sem_manager import SemTokManager as SemTokManager
|
|
15
|
+
from jaclang.langserve.utils import (
|
|
16
|
+
collect_all_symbols_in_scope as collect_all_symbols_in_scope,
|
|
17
|
+
create_range as create_range,
|
|
18
|
+
find_index as find_index,
|
|
19
|
+
find_node_by_position as find_node_by_position,
|
|
20
|
+
gen_diagnostics as gen_diagnostics,
|
|
21
|
+
get_item_path as get_item_path,
|
|
22
|
+
get_mod_path as get_mod_path,
|
|
23
|
+
get_symbols_for_outline as get_symbols_for_outline,
|
|
24
|
+
parse_symbol_path as parse_symbol_path,
|
|
25
|
+
resolve_completion_symbol_table as resolve_completion_symbol_table,
|
|
26
|
+
)
|
|
27
|
+
from jaclang.vendor.pygls import uris as uris
|
|
28
|
+
from jaclang.vendor.pygls.server import LanguageServer as LanguageServer
|
|
29
|
+
|
|
30
|
+
class ModuleInfo:
|
|
31
|
+
ir: Incomplete
|
|
32
|
+
impl_parent: Incomplete
|
|
33
|
+
sem_manager: Incomplete
|
|
34
|
+
def __init__(
|
|
35
|
+
self, ir: ast.Module, impl_parent: ModuleInfo | None = None
|
|
36
|
+
) -> None: ...
|
|
37
|
+
@property
|
|
38
|
+
def uri(self) -> str: ...
|
|
39
|
+
|
|
40
|
+
class JacLangServer(LanguageServer):
|
|
41
|
+
modules: Incomplete
|
|
42
|
+
executor: Incomplete
|
|
43
|
+
tasks: Incomplete
|
|
44
|
+
def __init__(self) -> None: ...
|
|
45
|
+
def update_modules(
|
|
46
|
+
self, file_path: str, build: Pass, refresh: bool = False
|
|
47
|
+
) -> None: ...
|
|
48
|
+
def quick_check(self, file_path: str) -> bool: ...
|
|
49
|
+
def deep_check(self, file_path: str, annex_view: str | None = None) -> bool: ...
|
|
50
|
+
async def launch_quick_check(self, uri: str) -> None: ...
|
|
51
|
+
async def launch_deep_check(self, uri: str) -> None: ...
|
|
52
|
+
def get_completion(
|
|
53
|
+
self, file_path: str, position: lspt.Position, completion_trigger: str | None
|
|
54
|
+
) -> lspt.CompletionList: ...
|
|
55
|
+
def rename_module(self, old_path: str, new_path: str) -> None: ...
|
|
56
|
+
def delete_module(self, uri: str) -> None: ...
|
|
57
|
+
def formatted_jac(self, file_path: str) -> list[lspt.TextEdit]: ...
|
|
58
|
+
def get_hover_info(
|
|
59
|
+
self, file_path: str, position: lspt.Position
|
|
60
|
+
) -> lspt.Hover | None: ...
|
|
61
|
+
def get_node_info(self, node: ast.AstSymbolNode) -> str | None: ...
|
|
62
|
+
def get_outline(self, file_path: str) -> list[lspt.DocumentSymbol]: ...
|
|
63
|
+
def get_definition(
|
|
64
|
+
self, file_path: str, position: lspt.Position
|
|
65
|
+
) -> lspt.Location | None: ...
|
|
66
|
+
def get_references(
|
|
67
|
+
self, file_path: str, position: lspt.Position
|
|
68
|
+
) -> list[lspt.Location]: ...
|
|
69
|
+
def get_semantic_tokens(self, file_path: str) -> lspt.SemanticTokens: ...
|
|
70
|
+
def log_error(self, message: str) -> None: ...
|
|
71
|
+
def log_warning(self, message: str) -> None: ...
|
|
72
|
+
def log_info(self, message: str) -> None: ...
|
|
73
|
+
def log_py(self, message: str) -> None: ...
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import jaclang.compiler.absyntree as ast
|
|
2
|
+
import lsprotocol.types as lspt
|
|
3
|
+
from _typeshed import Incomplete
|
|
4
|
+
from jaclang.langserve.utils import (
|
|
5
|
+
find_surrounding_tokens as find_surrounding_tokens,
|
|
6
|
+
get_line_of_code as get_line_of_code,
|
|
7
|
+
get_token_start as get_token_start,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
class SemTokManager:
|
|
11
|
+
sem_tokens: Incomplete
|
|
12
|
+
static_sem_tokens: Incomplete
|
|
13
|
+
def __init__(self, ir: ast.Module) -> None: ...
|
|
14
|
+
def gen_sem_tokens(self, ir: ast.Module) -> list[int]: ...
|
|
15
|
+
def gen_sem_tok_node(
|
|
16
|
+
self, ir: ast.Module
|
|
17
|
+
) -> list[tuple[lspt.Position, int, int, ast.AstSymbolNode]]: ...
|
|
18
|
+
def update_sem_tokens(
|
|
19
|
+
self,
|
|
20
|
+
content_changes: lspt.DidChangeTextDocumentParams,
|
|
21
|
+
sem_tokens: list[int],
|
|
22
|
+
document_lines: list[str],
|
|
23
|
+
) -> list[int]: ...
|
|
24
|
+
@staticmethod
|
|
25
|
+
def handle_multi_line_delete(
|
|
26
|
+
sem_tokens: list[int],
|
|
27
|
+
next_token_index: int,
|
|
28
|
+
nxt_tok_pos: tuple[int, int, int],
|
|
29
|
+
change_start_line: int,
|
|
30
|
+
change_end_line: int,
|
|
31
|
+
change_start_char: int,
|
|
32
|
+
change_end_char: int,
|
|
33
|
+
prev_tok_pos: tuple[int, int, int],
|
|
34
|
+
is_next_token_same_line: bool,
|
|
35
|
+
) -> list[int]: ...
|
|
36
|
+
@staticmethod
|
|
37
|
+
def handle_single_line_delete_between_tokens(
|
|
38
|
+
sem_tokens: list[int],
|
|
39
|
+
next_token_index: int,
|
|
40
|
+
is_next_token_same_line: bool,
|
|
41
|
+
change: lspt.TextDocumentContentChangeEvent_Type1,
|
|
42
|
+
change_start_line: int,
|
|
43
|
+
change_end_line: int,
|
|
44
|
+
) -> list[int]: ...
|
|
45
|
+
@staticmethod
|
|
46
|
+
def handle_single_line_delete(
|
|
47
|
+
sem_tokens: list[int],
|
|
48
|
+
next_token_index: int,
|
|
49
|
+
prev_token_index: int,
|
|
50
|
+
is_next_token_same_line: bool,
|
|
51
|
+
change: lspt.TextDocumentContentChangeEvent_Type1,
|
|
52
|
+
) -> list[int]: ...
|
|
53
|
+
@staticmethod
|
|
54
|
+
def handle_single_line_insertion(
|
|
55
|
+
sem_tokens: list[int],
|
|
56
|
+
next_token_index: int,
|
|
57
|
+
is_next_token_same_line: bool,
|
|
58
|
+
change: lspt.TextDocumentContentChangeEvent_Type1,
|
|
59
|
+
tokens_on_same_line: bool,
|
|
60
|
+
nxt_tok_pos: tuple[int, int, int],
|
|
61
|
+
change_start_line: int,
|
|
62
|
+
line_delta: int,
|
|
63
|
+
) -> list[int]: ...
|
|
64
|
+
@staticmethod
|
|
65
|
+
def handle_multi_line_insertion(
|
|
66
|
+
sem_tokens: list[int],
|
|
67
|
+
next_token_index: int,
|
|
68
|
+
nxt_tok_pos: tuple[int, int, int],
|
|
69
|
+
change_start_line: int,
|
|
70
|
+
change_end_line: int,
|
|
71
|
+
change_end_char: int,
|
|
72
|
+
prev_tok_pos: tuple[int, int, int],
|
|
73
|
+
tokens_on_same_line: bool,
|
|
74
|
+
changing_line_text: tuple[str, int],
|
|
75
|
+
line_delta: int,
|
|
76
|
+
) -> list[int]: ...
|
|
77
|
+
@staticmethod
|
|
78
|
+
def handle_insert_inside_token(
|
|
79
|
+
change: lspt.TextDocumentContentChangeEvent_Type1,
|
|
80
|
+
sem_tokens: list[int],
|
|
81
|
+
prev_token_index: int,
|
|
82
|
+
changing_line_text: tuple[str, int],
|
|
83
|
+
line_delta: int,
|
|
84
|
+
prev_tok_pos: tuple[int, int, int],
|
|
85
|
+
change_start_char: int,
|
|
86
|
+
change_end_char: int,
|
|
87
|
+
is_token_boundary_edit: bool,
|
|
88
|
+
nxt_tok_pos: tuple[int, int, int],
|
|
89
|
+
) -> tuple[list[int], bool, tuple[int, int, int], int | None]: ...
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import lsprotocol.types as lspt
|
|
2
|
+
from _typeshed import Incomplete
|
|
3
|
+
from jaclang.langserve.engine import JacLangServer as JacLangServer
|
|
4
|
+
from jaclang.settings import settings as settings
|
|
5
|
+
|
|
6
|
+
server: Incomplete
|
|
7
|
+
|
|
8
|
+
async def did_open(
|
|
9
|
+
ls: JacLangServer, params: lspt.DidOpenTextDocumentParams
|
|
10
|
+
) -> None: ...
|
|
11
|
+
async def did_change(
|
|
12
|
+
ls: JacLangServer, params: lspt.DidChangeTextDocumentParams
|
|
13
|
+
) -> None: ...
|
|
14
|
+
def formatting(
|
|
15
|
+
ls: JacLangServer, params: lspt.DocumentFormattingParams
|
|
16
|
+
) -> list[lspt.TextEdit]: ...
|
|
17
|
+
def did_create_files(ls: JacLangServer, params: lspt.CreateFilesParams) -> None: ...
|
|
18
|
+
def did_rename_files(ls: JacLangServer, params: lspt.RenameFilesParams) -> None: ...
|
|
19
|
+
def did_delete_files(ls: JacLangServer, params: lspt.DeleteFilesParams) -> None: ...
|
|
20
|
+
def completion(
|
|
21
|
+
ls: JacLangServer, params: lspt.CompletionParams
|
|
22
|
+
) -> lspt.CompletionList: ...
|
|
23
|
+
def hover(
|
|
24
|
+
ls: JacLangServer, params: lspt.TextDocumentPositionParams
|
|
25
|
+
) -> lspt.Hover | None: ...
|
|
26
|
+
def document_symbol(
|
|
27
|
+
ls: JacLangServer, params: lspt.DocumentSymbolParams
|
|
28
|
+
) -> list[lspt.DocumentSymbol]: ...
|
|
29
|
+
def definition(
|
|
30
|
+
ls: JacLangServer, params: lspt.TextDocumentPositionParams
|
|
31
|
+
) -> lspt.Location | None: ...
|
|
32
|
+
def references(
|
|
33
|
+
ls: JacLangServer, params: lspt.ReferenceParams
|
|
34
|
+
) -> list[lspt.Location]: ...
|
|
35
|
+
def semantic_tokens_full(
|
|
36
|
+
ls: JacLangServer, params: lspt.SemanticTokensParams
|
|
37
|
+
) -> lspt.SemanticTokens: ...
|
|
38
|
+
def run_lang_server() -> None: ...
|