jaclang 0.5.16__py3-none-any.whl → 0.5.18__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of jaclang might be problematic. Click here for more details.
- jaclang/__init__.py +2 -6
- jaclang/cli/cli.py +1 -1
- jaclang/compiler/absyntree.py +24 -24
- jaclang/compiler/generated/jac_parser.py +2 -2
- jaclang/compiler/jac.lark +7 -7
- jaclang/compiler/parser.py +31 -16
- jaclang/compiler/passes/ir_pass.py +10 -8
- jaclang/compiler/passes/main/fuse_typeinfo_pass.py +3 -2
- jaclang/compiler/passes/main/import_pass.py +4 -5
- jaclang/compiler/passes/main/pyast_gen_pass.py +60 -20
- jaclang/compiler/passes/main/pyast_load_pass.py +7 -6
- jaclang/compiler/passes/main/sym_tab_build_pass.py +26 -13
- jaclang/compiler/passes/tool/jac_formatter_pass.py +146 -23
- jaclang/compiler/passes/tool/tests/test_jac_format_pass.py +66 -55
- jaclang/compiler/workspace.py +2 -6
- jaclang/core/llms.py +84 -2
- jaclang/plugin/default.py +10 -2
- jaclang/settings.py +95 -0
- jaclang/vendor/mypy/checker.py +2 -3
- {jaclang-0.5.16.dist-info → jaclang-0.5.18.dist-info}/METADATA +1 -1
- {jaclang-0.5.16.dist-info → jaclang-0.5.18.dist-info}/RECORD +24 -25
- jaclang/compiler/tests/fixtures/__jac_gen__/__init__.py +0 -0
- jaclang/compiler/tests/fixtures/__jac_gen__/hello_world.py +0 -5
- {jaclang-0.5.16.dist-info → jaclang-0.5.18.dist-info}/WHEEL +0 -0
- {jaclang-0.5.16.dist-info → jaclang-0.5.18.dist-info}/entry_points.txt +0 -0
- {jaclang-0.5.16.dist-info → jaclang-0.5.18.dist-info}/top_level.txt +0 -0
jaclang/__init__.py
CHANGED
|
@@ -17,13 +17,9 @@ from jaclang.vendor import pluggy # noqa: E402
|
|
|
17
17
|
|
|
18
18
|
jac_import = JacFeature.jac_import
|
|
19
19
|
|
|
20
|
-
__all__ = [
|
|
21
|
-
"jac_import",
|
|
22
|
-
"lark",
|
|
23
|
-
"mypy",
|
|
24
|
-
"pluggy",
|
|
25
|
-
]
|
|
26
20
|
pm.register(JacFeatureDefaults)
|
|
27
21
|
pm.register(JacBuiltin)
|
|
28
22
|
pm.register(JacCmdDefaults)
|
|
29
23
|
pm.load_setuptools_entrypoints("jac")
|
|
24
|
+
|
|
25
|
+
__all__ = ["jac_import", "lark", "mypy", "pluggy"]
|
jaclang/cli/cli.py
CHANGED
jaclang/compiler/absyntree.py
CHANGED
|
@@ -110,11 +110,15 @@ class AstNode:
|
|
|
110
110
|
|
|
111
111
|
return Pass.get_all_sub_nodes(node=self, typ=typ, brute_force=brute_force)
|
|
112
112
|
|
|
113
|
-
def
|
|
113
|
+
def parent_of_type(self, typ: Type[T]) -> T:
|
|
114
114
|
"""Get parent of type."""
|
|
115
115
|
from jaclang.compiler.passes import Pass
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
ret = Pass.has_parent_of_type(node=self, typ=typ)
|
|
118
|
+
if isinstance(ret, typ):
|
|
119
|
+
return ret
|
|
120
|
+
else:
|
|
121
|
+
raise ValueError(f"Parent of type {typ} not found.")
|
|
118
122
|
|
|
119
123
|
def format(self) -> str:
|
|
120
124
|
"""Get all sub nodes of type."""
|
|
@@ -591,16 +595,16 @@ class Import(ElementStmt, CodeBlockStmt):
|
|
|
591
595
|
|
|
592
596
|
def __init__(
|
|
593
597
|
self,
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
items:
|
|
598
|
+
hint: SubTag[Name],
|
|
599
|
+
from_loc: Optional[ModulePath],
|
|
600
|
+
items: SubNodeList[ModuleItem] | SubNodeList[ModulePath],
|
|
597
601
|
is_absorb: bool, # For includes
|
|
598
602
|
kid: Sequence[AstNode],
|
|
599
603
|
doc: Optional[String] = None,
|
|
600
604
|
) -> None:
|
|
601
605
|
"""Initialize import node."""
|
|
602
|
-
self.
|
|
603
|
-
self.
|
|
606
|
+
self.hint = hint
|
|
607
|
+
self.from_loc = from_loc
|
|
604
608
|
self.items = items
|
|
605
609
|
self.is_absorb = is_absorb
|
|
606
610
|
AstNode.__init__(self, kid=kid)
|
|
@@ -610,10 +614,9 @@ class Import(ElementStmt, CodeBlockStmt):
|
|
|
610
614
|
"""Normalize import node."""
|
|
611
615
|
res = True
|
|
612
616
|
if deep:
|
|
613
|
-
res = self.
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
res = res and self.items.normalize(deep) if self.items else res
|
|
617
|
+
res = self.hint.normalize(deep)
|
|
618
|
+
res = res and self.from_loc.normalize(deep) if self.from_loc else res
|
|
619
|
+
res = res and self.items.normalize(deep)
|
|
617
620
|
res = res and self.doc.normalize(deep) if self.doc else res
|
|
618
621
|
new_kid: list[AstNode] = []
|
|
619
622
|
if self.doc:
|
|
@@ -622,16 +625,12 @@ class Import(ElementStmt, CodeBlockStmt):
|
|
|
622
625
|
new_kid.append(self.gen_token(Tok.KW_INCLUDE))
|
|
623
626
|
else:
|
|
624
627
|
new_kid.append(self.gen_token(Tok.KW_IMPORT))
|
|
625
|
-
new_kid.append(self.
|
|
626
|
-
if self.
|
|
628
|
+
new_kid.append(self.hint)
|
|
629
|
+
if self.from_loc:
|
|
627
630
|
new_kid.append(self.gen_token(Tok.KW_FROM))
|
|
628
|
-
|
|
629
|
-
new_kid.append(p)
|
|
630
|
-
new_kid.append(self.gen_token(Tok.COMMA))
|
|
631
|
-
new_kid.pop()
|
|
632
|
-
if self.items:
|
|
631
|
+
new_kid.append(self.from_loc)
|
|
633
632
|
new_kid.append(self.gen_token(Tok.COMMA))
|
|
634
|
-
|
|
633
|
+
new_kid.append(self.items)
|
|
635
634
|
new_kid.append(self.gen_token(Tok.SEMI))
|
|
636
635
|
self.set_kids(nodes=new_kid)
|
|
637
636
|
return res
|
|
@@ -2389,9 +2388,9 @@ class LambdaExpr(Expr):
|
|
|
2389
2388
|
|
|
2390
2389
|
def __init__(
|
|
2391
2390
|
self,
|
|
2392
|
-
signature: FuncSignature,
|
|
2393
2391
|
body: Expr,
|
|
2394
2392
|
kid: Sequence[AstNode],
|
|
2393
|
+
signature: Optional[FuncSignature] = None,
|
|
2395
2394
|
) -> None:
|
|
2396
2395
|
"""Initialize lambda expression node."""
|
|
2397
2396
|
self.signature = signature
|
|
@@ -2402,11 +2401,12 @@ class LambdaExpr(Expr):
|
|
|
2402
2401
|
"""Normalize ast node."""
|
|
2403
2402
|
res = True
|
|
2404
2403
|
if deep:
|
|
2405
|
-
res = self.signature.normalize(deep)
|
|
2404
|
+
res = self.signature.normalize(deep) if self.signature else res
|
|
2406
2405
|
res = res and self.body.normalize(deep)
|
|
2407
|
-
new_kid: list[AstNode] = [
|
|
2408
|
-
|
|
2409
|
-
self.signature
|
|
2406
|
+
new_kid: list[AstNode] = [self.gen_token(Tok.KW_WITH)]
|
|
2407
|
+
if self.signature:
|
|
2408
|
+
new_kid.append(self.signature)
|
|
2409
|
+
new_kid += [
|
|
2410
2410
|
self.gen_token(Tok.KW_CAN),
|
|
2411
2411
|
self.body,
|
|
2412
2412
|
self.gen_token(Tok.SEMI),
|