cpyte 4.6.2__tar.gz → 4.6.3__tar.gz
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.
- {cpyte-4.6.2/source/cpyte.egg-info → cpyte-4.6.3}/PKG-INFO +2 -2
- {cpyte-4.6.2 → cpyte-4.6.3}/readme.md +1 -1
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/__init__.py +1 -1
- cpyte-4.6.3/source/cpyte/_bignum_bc.py +181 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/astparse.py +34 -26
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/bytecoding.py +87 -25
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/compiling.py +49 -5
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/elf2sef.py +10 -7
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/extension_hooks.py +9 -41
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/lexar.py +0 -2
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/lsp_server.py +397 -9
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/mainpie.py +14 -4
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/optimizations.py +3 -2
- cpyte-4.6.3/source/cpyte/runpy_runtime.c +638 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/sef.py +14 -6
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/semantic_analasis.py +61 -24
- {cpyte-4.6.2 → cpyte-4.6.3/source/cpyte.egg-info}/PKG-INFO +2 -2
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte.egg-info/SOURCES.txt +1 -0
- cpyte-4.6.2/source/cpyte/_bignum_bc.py +0 -179
- {cpyte-4.6.2 → cpyte-4.6.3}/MANIFEST.in +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/pyproject.toml +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/setup.cfg +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/__main__.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/_runtime_bc.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/bignum.c +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/bignum_protos.h +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/clib.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/floats_runtime.c +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/formatter.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/gc_runtime.c +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/generate_bc.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/linker.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/mksef.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/package_manifest.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/runtime.c +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/runtime_scorpion.c +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/scorpion_abi.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/ugc.h +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/ui.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/update_check.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/winjit_patch.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte/winjit_stubs.c +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte.egg-info/dependency_links.txt +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte.egg-info/entry_points.txt +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte.egg-info/requires.txt +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/source/cpyte.egg-info/top_level.txt +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/test/test_bignum_jit.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/test/test_compiler_regressions.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/test/test_fuzz_del_has.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/test/test_scorpion_abi.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/test/test_scorpion_dl.py +0 -0
- {cpyte-4.6.2 → cpyte-4.6.3}/test/test_sef_tools.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cpyte
|
|
3
|
-
Version: 4.6.
|
|
3
|
+
Version: 4.6.3
|
|
4
4
|
Summary: The Cpyte programming language compiler
|
|
5
5
|
Author: Hoang Duy Tung
|
|
6
6
|
License: MIT
|
|
@@ -10,7 +10,7 @@ Requires-Dist: llvmlite>=0.45
|
|
|
10
10
|
Requires-Dist: lsprotocol>=2025.0.0
|
|
11
11
|
Requires-Dist: pygls>=1.3.1
|
|
12
12
|
|
|
13
|
-
NOTICE: It seems cpyte has been going through a lot of changes, including the OOP work which was quite fabulous and python-like. I liked how the syntax changes very interestingly and made the language better. However,
|
|
13
|
+
NOTICE: It seems cpyte has been going through a lot of changes, including the OOP work which was quite fabulous and python-like. I liked how the syntax changes very interestingly and made the language better. However, after a lot of experimentation and many breaking changes, I've decided that the syntax lock is now settled. The language is being stabilized, and development will slow down as we focus on reliability and polish instead of constant churn. After that, improvements will be delivered through the @std/improvements package with the extension hook framework.
|
|
14
14
|
|
|
15
15
|
Check out the official documentation [here](https://gitea.5gnew.io.vn/Cpyte-Project/Cpyte/src/branch/main/source/cpyte/cpy_language_documentation.md).
|
|
16
16
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
NOTICE: It seems cpyte has been going through a lot of changes, including the OOP work which was quite fabulous and python-like. I liked how the syntax changes very interestingly and made the language better. However,
|
|
1
|
+
NOTICE: It seems cpyte has been going through a lot of changes, including the OOP work which was quite fabulous and python-like. I liked how the syntax changes very interestingly and made the language better. However, after a lot of experimentation and many breaking changes, I've decided that the syntax lock is now settled. The language is being stabilized, and development will slow down as we focus on reliability and polish instead of constant churn. After that, improvements will be delivered through the @std/improvements package with the extension hook framework.
|
|
2
2
|
|
|
3
3
|
Check out the official documentation [here](https://gitea.5gnew.io.vn/Cpyte-Project/Cpyte/src/branch/main/source/cpyte/cpy_language_documentation.md).
|
|
4
4
|
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import base64
|
|
2
|
+
import zlib
|
|
3
|
+
|
|
4
|
+
from llvmlite import binding
|
|
5
|
+
|
|
6
|
+
_B64 = (
|
|
7
|
+
"eJzten14E1Xa/plMmgltOglQIKVJmABiVT6mKWD6pUlToCpqQFxx1U3SD2hdStO0lNLV3UxTmqrVDVi1"
|
|
8
|
+
"P9d1W2F9wf2wsl0vVlk3aSpWqFhd1MqybAoFC4tQAXfZj9/u+5yZSZNMcK93972u9y9LSc/c88yZ+zzn"
|
|
9
|
+
"ee7znJmcCM5KQ/CTAf8fWYPQP+Gn2BY8sQyAFMDKVOz82+9/6+Wav/3y7rQ13tUEYEYVQh/RCKXJjEgG"
|
|
10
|
+
"x3PhP8XN22EdlN+m0JjydhKtqutSlJkG+RNlXu0KWfHOtOIBjSnDrNTekWoqay/trTDa2trlq3Sm4vl1"
|
|
11
|
+
"g8qp82+wtHVo7iBMFa3KnTpm3sr20ygzp1ieeWP2jYE1DzLzfmVpU2WGqcMzMss6OuZTmaayhXmDganz"
|
|
12
|
+
"Bqe10/r8ipJVg5q5tpWyzNnoMQahbMxpg1yzr7jlsalr4WNHXb+9NHXKgpUHU4rLFigPes8oA51T9s0d"
|
|
13
|
+
"9HXLg0rLVJXzKZTxOGJWIK9Ji0yrkGK7E3lvIBGqZFG3RgF/nfAXBdEKi9fEorVKEgVatKifUck6OZd3"
|
|
14
|
+
"rnb1VK3zKSabDFf9mEXog9udKvlulJvifnrpik72L/98v/DTJXdOvW51lVPLkMXY32u0CD0EDs4av+4q"
|
|
15
|
+
"9jkRaGGVyvqA313l91SRTU3+BjfVnE1tQ8dH9cd70kd6dP0hHerXn+hJH7ca+glDxKg/Pqo71q3v5wzD"
|
|
16
|
+
"RDe1bY/fg9q3dfvdWv8W6CHg39rt92ip5iZqWxVZt4eqZ/2egH95l79hGCwnEDNu1I2N6g5xhmNOXaTH"
|
|
17
|
+
"4HV7qSYn3N3X2E56oZ+Avz6baq4i67P97m5/c8Dv6aKc6f09ujNc+seMboQzHLfOORgyjDjTBzjDhwA6"
|
|
18
|
+
"dQc5XURoGPWDxBw4ddClixDY5uCo/hg0iDnHewzHeJsxlw7wQaN+HA69uhOcIWI1nOAwOMTp+2F0gAeB"
|
|
19
|
+
"W3q/1XAsZJjw8odG+nwQTumxGWEYH9V/GOJ7COrOARjiDcDSoj/j0p0I6c/jzvVnenC3x3swAo2IEYwN"
|
|
20
|
+
"w3AKGQ5ZDUM9ehG3Gg5xujFhjBZDvwszB54RnuoYx1NyGgb4z2FwoFdsnOEbkR7dQejBZYA5+tClG+fN"
|
|
21
|
+
"zlj53oKGiWD6SQb3c55QH7fQ/VHwzCTojYHnomA/MWJRIktqVrsRlbrCb2pwvNyqOcOoR4fp08OKiQn6"
|
|
22
|
+
"bIS+Yqcvof3hgv22rF5bXqsvD7UWHLBlDfsKW8nCoC1/fzivz1rQShZ1kxb1Jbv6NNJctqhHWfqP0AOj"
|
|
23
|
+
"vmhRn2bpKxP0pWHFSbv6jJM+zahrWPXZbrCMEJZhm3kwnNdJFvWFzEFbERpF6okgvvvnGgpZ1aOM+jM7"
|
|
24
|
+
"fWVYccZOj1rUXzLQmzo4u9WWN0Rm/dRq7iWL9vtu6fAV9YZmt5NFuwEMmTvIvKDQsOUHyFvgVEfYHCQL"
|
|
25
|
+
"+UZBHzTIW/bbivp4m8GwGfCALX8YDom8A2RR0Fd4gMwDsIssaIXRAc7lBW1Zrb7CPl9RhBAOIUzhVAFv"
|
|
26
|
+
"VjgcLtjtKxjmLY8C6OMNsGX+UNh8wFcwgjsvGLLhbvfb8gCBRtBmPor9BqcKO32FXbYCEfcVdpJ5g8IY"
|
|
27
|
+
"ucLWMGYOPIM81UGSpxQqbOc/u8GBhNgY4htBW14H9BAuhDnaHTYP82ZDPjPfW1GEyxqw4n5GSMN+Ttca"
|
|
28
|
+
"BYcmQUI/CR6Ngq1kL7HhcRwgc9A9aH63WnY/I3ugyaqR41870w8JMqo/2JM+ZNQdM+pHjHO8jUqq0enf"
|
|
29
|
+
"qqW8LLVN6W/M9i/3+reWUlg9AlQQ58Uxr/6QUTdEMKBFx7yGMSPOaEi6Iz3px4y6cUKPQBxArLxdVLPS"
|
|
30
|
+
"X7ceeqC2NYF8+eu6/VtBczT+ZpYCMdlW5dtWSj2aTSE1ajFAUh/p0Y33pB8kDOcIJdXkpfDdq/xmpGxW"
|
|
31
|
+
"UtvMfk+3fzmolpJq3kNty/ZvQyA7h/iUhIGMh/RXXDqc3RbduFEvSM2gIDUu3YecbkIQIpBKvnGiRx/h"
|
|
32
|
+
"9BMh/bke3thqOMjLzoccvmRwVD9OGMZG9YO8kowYdUd6RIU5xoAg6CEThcOTQRrkYkSQJs5wAnSY72Go"
|
|
33
|
+
"xzDC6QUDODzqMoDiHeflccQFqgL2+kOA8JrT32MAv2HB6dGNhXTHojgozyAvIFhtjKIKwRAO8o1BnhLo"
|
|
34
|
+
"Cf4k9P1WWmy4hAZcKGgXzJH+IM/qjMswwPeG5YWJycvYpOY4Y+D4JNgdBRmdN/2xqeg1FCh20kHFSQ1a"
|
|
35
|
+
"O2JhSJCjjvmolNizXPs4CsjsNcPPncZhRwUz0K184D2w56No1A3BgtWjP9STHhG0GoZMuP1b3f7lTjy5"
|
|
36
|
+
"9Ui5tcm/HJYwHAOw8PnrYQ2CSbdQEGw9hkMEAyPqd+k+7knnFwg8TJD9sZ70gR7DUEgHAn7MafjQOucQ"
|
|
37
|
+
"EYxfuXx1Xn8zwmslh+9+zEjHR90QLKmc4Rzvbe8yJV7dlq/3uZ1Us5t6VEt9x+lbpqGaSzFYp6U8XqHh"
|
|
38
|
+
"b2CoR+CU1l+Hl0vc2FoFDeoRt7+5ircJ+OsAZ/wN3XBIeiAR+HTwAMhSjUoYHcbrvf7lEORV1HeCpHAI"
|
|
39
|
+
"KgmnGnmzpm4hB3nLPQBSggEcbuny1zVRW3vxqcYuP+7W7Ye7bIWG1+/eg/0Gp5og3Vh/o4hD+lCegDBG"
|
|
40
|
+
"EtJ8G4DA08tTDVAenvk2Df9pAQeSYqOLb3hxIYETEOaoFJKaN+ui6vjegP/N7eA337JeqtBN5imjYFcM"
|
|
41
|
+
"zJ8E90RBJeUkf8Pyaxl6Gb0gi1Be+RWrM82obGHwb2orSKu5z5bXRxQegPWLLALtRRcm6AvDivOwyjhp"
|
|
42
|
+
"NEpfHFZcgXUQFqMAfcFN1wzj1WccgaIeteWhgUJYtjrC+dDDYLhgGPSWLDoAqwNnPurL67JB/1lDtvxx"
|
|
43
|
+
"sGxCmisa+pKbPm2BVY+esKst/Epkw4vmQPzyx+V12szDtiJe9nsVo3b6clDxbQ193qK+0K0+5VRv6lWc"
|
|
44
|
+
"tKjPAsjSpyz0hNAI0GNefOoUdI74xgT9OVKf96ov2NWf8zaXWBrwsQB9BQ4tNKzI/LqMwTNBetRNYzMn"
|
|
45
|
+
"PTGsgNX2c6e6STjUQHDAKd4Mqa8IxQB/6ssgfV4wgMNu+jJLX4zQf4J2kL5sx/YX7BiBxoSG/hL8BqeQ"
|
|
46
|
+
"Gtb9M8NRHNZxC31JGCP4mcXMgecET/WShafEqk/yn+Ma2hNt1PONCTt9iq8EYI7OsjwrVn2Z4XsD/hFF"
|
|
47
|
+
"nQb38ycvtZmhRqNg/SRoiYFbouAo2mR+HjHbg6BLy079HccP6hKDh0m7jaX4iJK/HhSiqKXb0goLfbig"
|
|
48
|
+
"w5bVhcMpv9d2C/oc5itIX2Rp5KIvaejP7XQNUl+EELLg4Xvx+t5HFMBEd5EWqKn6CJhuHA9QPLxgy+qD"
|
|
49
|
+
"ACDzEQzqSzuNctQQOad6cQ+XJnAZdsqivgi1E0N/6aShHIKC6nKA/itYGpC8CIqTF2x5w7asDrLwKKnB"
|
|
50
|
+
"wQDBDHFbFx+BUH1poCs19jyC8qmTLy1gIMO+gvGwGVcpHARhvlAyBcSSybybzIuIlVWhUFkdsBUEyYKI"
|
|
51
|
+
"r+CoDVcsUG908OXTbhJXYgFIChKnRoCviHpt5hdsYqXUZzUP2qAcMgiHA5weyp5eocSCJOLzEZ+yFfWS"
|
|
52
|
+
"BYIBHO4JF0Lltp8v83rDUB2BfUEnIHzt1GorAr/xBVXeoC+vL4pDKgX4QghXTTah/gGePFWuMMBTgroI"
|
|
53
|
+
"f5L5rT6d2AgLDbjQzCcjzFF+B89qKFzYzveGyyRrrHYanKydQjFweBK0RgsqqxlldVBomjdj+XjaFRxQ"
|
|
54
|
+
"pEXhJUq8Ga1WSxdU1DaIjaygUEzCWMgIzpeaIJ61M0gDGlUDNTY/uZCMn+Eimb7ipREwLOokLUC1NWz+"
|
|
55
|
+
"KfSAK9gi4A91KWhRu62oy5cHKtcXgki7pZP0JpTWp5D6S4SLeRLfvc+miw8nUDOo7Y/ybkQgR6f5VB0N"
|
|
56
|
+
"0lci9F9ZPusZ+kqAFiRoDIladNZCXxUECtfzuHFxGCSLvhqhvxzmjRn1KV6OzlrwJWMQ4Xycj/EKc14D"
|
|
57
|
+
"oxOVpwaid5iGDBUO65wUyMh5QaMsYnLhU3Y1pJ5gAIfnWDUo4QVeNs+z6tNgH6FPA8Jr0ahdDX7DQgR5"
|
|
58
|
+
"BCoXxSEvxnhhwSqkEdUJhnCKb4zxlEBn8KeXHmUoscHyDYR3OjizYI4COFsxCCLG94ZlRxOTHc+kFrEx"
|
|
59
|
+
"sGEStEdBDR1smz8NrUWvBHUvpbeWoN29XFcqxI+mkwj0K17Kh6qJXfIxDiW1dw6a9rXsfC0715Sdp+5A"
|
|
60
|
+
"pUaWcoYPOIXS6Luo5OtC6OtC6JqFELtP2OnfinanPzYT7UbruDyU9dLn/EYsgjdi/0ABbz76K9ObIuzF"
|
|
61
|
+
"NPLt6fLr0SO9PWf/AUbfQ3cRE6RFBgbbp04aPDYLTbFQuKudd6Np3alDxIjFSxATobbrVbGrImo0ZdwX"
|
|
62
|
+
"nLlS7DljeUaZRn4Gbco+GMEE/E6aNx6xBwjNHqKPy/YJbDeSLoUQ2x8qTqlk3gxv7oizO0QEZG5FVsdS"
|
|
63
|
+
"2GCiI05fjwL2mMHMTaUf871RAslvpkdJUlnyYKa8WrOp9BgD+1Czj0lvSX8sS45uQBs18lDbWLoc96xs"
|
|
64
|
+
"cZIyoSZEFajEK0cI3aZFyAR/p7dauhh5WM5pFyi357iUra5+i+odeYuWrpBNVYYBmVbZ3wsIV71AdSR3"
|
|
65
|
+
"tabbBbhtKWFsI3cseOV5y/p+952aXld/YMoxuevUAs0P/8yFWtHzTCunXa096FW1TbFmrtYMRVQL5BtZ"
|
|
66
|
+
"IseXa9ZUvzTslLkUGwOKwdaQ6kiki+0KZe4OyftVR5j0o87+Xnxqumx5l6Ur5N4TkodUx5wtrCLc2q86"
|
|
67
|
+
"HknXVGMD92rtkNO8ABhavT4CxtELG97GXjK/yhd7hKuETaJ/W5DK6yVv9sKvL/2/eMFvnsBLhsdNubup"
|
|
68
|
+
"eoZqZikPfgBIbdXwbR4UDKDdaKGanVTDsOIsfPKHNQG6joHdKYU/hxUXWNGshk0TkJcjNPRwu1o5dae1"
|
|
69
|
+
"rSMjk1ha3PXCx6Gf5C85/NmrjebPv2u9XN6w/kTboT+cu9R1y/ceeuKTT/7+0HPfP/xqTuHdS34zcPYX"
|
|
70
|
+
"b55ofHKr3WtUXQzAZOH54ggUpA+xbYRhJ0JeABgWoRFrzhQGIYIHEMzo+e5XOO1J4xSElADISOQ1zng5"
|
|
71
|
+
"Q+gBv6VASMHunuY7jZAF2hoeYb3Ge7NYSoNIoWP4JFR7L3nNXgR985cipHKWfkTdLUMWcDXDI05ku/Eb"
|
|
72
|
+
"gWkIpSLMAP+Q2rV/6d+FkB0J9wdKwcAr+udTlLhvC48EUdu6v0aWWpAunlLxlLcJvpdJSs+szlZrkCKe"
|
|
73
|
+
"UlMx50XmeEqVMx8n+V5ilPbbGQbR8ZTObj8p9DJJ6fGlGUqlN4HSz3vMQi+TlPqfVMhkkQQvbbPQfC8x"
|
|
74
|
+
"Sud2SSldNzeJ0sz7aQaPJEbp96UkQbgTKK3OSEFeWTylzS+VIDQ/gdL062QyS4KX9rAUbxCj9ODbOySU"
|
|
75
|
+
"3r7pScnEvdKQs4BBM+Mp/fqJHYgIJkzctzIovpcYpX9eKrTgMItR8vy/Ngmlj46UztAgKp7SsQ11Qi+T"
|
|
76
|
+
"lLbfPMghGyleRmAvDd8/F6Fp8ZR+dkQ6cYcakyYusks6cWvnpEgmbsb/XyiduH+skk7cM8VPQLqQ8RM3"
|
|
77
|
+
"u/lGSSw9+QFQiiRQenJ3qoRS99H1FlQYT+nhH8+TyYIJlBbNmKXBhzFKnseCXtQeT+mjO0oUcqzWsYlz"
|
|
78
|
+
"ly1n0AIU/QFKv7znbYKwEFEEKN2++yUataWKgAxTyq3cgth1IqLBlG6/6Sekt0dgCCTwxDkq9Ug1QzSS"
|
|
79
|
+
"Y0ruw+eQc4+IMJjS6W+toZAtRYTwxL3yz8fzkfZGEVFiSqH1R4mgXaRkwZRuHEqi5JkppTT7l3sklGb8"
|
|
80
|
+
"bIWU0qFFUkqVtUmUnn5CSmn0wSRKn/9cSql7q5TSG7+WeumZvyVR+scSKaUUnzXpdiqfdHTP6BRJzNeo"
|
|
81
|
+
"khzVpy1JckJOu3SAn5Yzegn54nctUmI/fpqTEnt8EblXSsyhWCshduOIareU2MnMJGJncgNSYs9UMUle"
|
|
82
|
+
"/SCJ2DMvJxF7+O4kYvf+JInYK470JGJfzF4Py9lMEeKT667l3SDCC6MQIgMjjN18lEBMmpxfikyGLl3m"
|
|
83
|
+
"1NWBjikLVh2U24pXotQepv2GlmnZrS3Z1LSl9LmTVzLXbX36sCf3b49+wo2d3vbDO6lfv9e97aHVz/nf"
|
|
84
|
+
"uXLld+m3v2+9cClv9d2/O7w0+7q7fvTbzW/QGRt+8YfyQN4LG557t2QP5/nk0/MZj5ZP+SYe5Wsgo2fg"
|
|
85
|
+
"b67SqxsY1W3IIIrabebWcEcx/5y8vqtOBQW88MwkV1Vs6MdvmnQb2BTezJfF77mKYAsz1NTR4Ka+o8QP"
|
|
86
|
+
"pd1uqtlNNjb53Yw/c2gqfT4A+331Zv7xApTfuZoB/QmjbsSo73cZNrCP4b027IP6yMID+A1pwdBERqOT"
|
|
87
|
+
"+k4VdTN+/07d7MUvEdxOqjGbaryaAt1u9fodUFNp/Z4u/7YubiHef0X4nQVLlg324NcuQ/zncZfukFEH"
|
|
88
|
+
"G9NDLsXHAby3EnZYefvDZtgxtZOwM10CN/17SwF+BRlWvVPtd6/3e9y+Bvwewd+g9Td0+zOP3KO+IDzo"
|
|
89
|
+
"4J9RjDI07PVymWz8RqnfavjQqDvOGY5HdGOj+nOEYYN2jbnXlv+Cr2DIPl8ciNO/tYlq6lqz+koAb0By"
|
|
90
|
+
"DQ/z702M+I3edwn8pmnIqJ9wKdZt95mHwgW9sE225f29v3DMVtAOh+GOt1NhpP6twEeJv4rg6eIePMU/"
|
|
91
|
+
"OD0N+yB2XuhDq2FsdNbIqP4EECjNLOj1FfX5slrD5g7YEoYL94fyYLN5lCwcKu2rwy8ZqTr+5WDm7w7C"
|
|
92
|
+
"dkz9eYTfVbF4n/UnO71ZQ8OWEA4vRxSwcRuz01fZeSfPu3T8K8tZ5436M0b9AH5lqR83ztnA/LDggK1o"
|
|
93
|
+
"P5nX6csbWn8AZh8G2ww8S/F7pczDn9EXWfVoBD+2wq+w2TCBX6PAWBxdECrYw/hbEF1cqzUvEgbXFcFM"
|
|
94
|
+
"DVkGuvWHevT4HVNIt2F+OUuP4vlVn8Uvx21G3xYtVV/qd3T7H/HCta91EoUdYfwcYNiWD+E0BB5TlRpn"
|
|
95
|
+
"FLsMQPVISL+Wy9iweiNsNmH3GlFctKuv4K7o0xGF+O6e3WXxNVbht66Za2fvDxdAHO62mYfAhyR+NDFE"
|
|
96
|
+
"FoIzO8OqlekHIXTxOyzddznDJfya7+BrCohA6AfmInfacq0fKn/xJWlXqA+/cC84EDb/XVZ0IJzfCdyq"
|
|
97
|
+
"jjP8ty+M+oPgwFA6nn1X22XFuJ0eRWo8zAnwPz9StI1BaBPk505DKWNrV2VOqagYfJfhOuSmlStXTueK"
|
|
98
|
+
"uwNfDAwq84rbOl4KHwBBemKn7r2s+XfLVe8Uo3tK7mC+Uempr67dvLW8yuVx1Fc3V9pvszGrKxsrN23Z"
|
|
99
|
+
"2uAq21S5weOqqVzkrq3e3FDpsbrdmyqZ8k2uzRuZRuFKxpSzmF3MMtk8usiUw7KLc/A/NueGTbVghz9q"
|
|
100
|
+
"azZXu2sbKjc3MPhG91TX4H5sS2w33cSsK7ZaoXN3Dm/p2ryNEW+GD9GZIkEI2Zbg7rCyf5Z6nrIjv4Nh"
|
|
101
|
+
"/whAb1gp+y09T9me18Ewn7Et3u6wKjzdkqvawbzHrg7nhi1TP1CR95bkyg+qrKawt+kjVfiLe3NVTqSA"
|
|
102
|
+
"1iVovXffeyxbbn/PnV1mf4xbofhEZcts55aF7YoK93us2bEs7FVU2X+vaOe0yb/rn4XPLGh0Ezftx40O"
|
|
103
|
+
"+YLsecuXv7n8uddv3pf/umlW7uu9v/jVmsfTDvctmsHjS/eZbn5jjQxqtb2gqzfDuNJSPdmgV1TzencX"
|
|
104
|
+
"5AgO77zhcMsZ3UHhu0MhnEqCDsxcespJf2bHD5nHLNFHzb1eDgcSVr8mf52Q++vdL4TNfUTBbl9RZ1j2"
|
|
105
|
+
"bfx+/Pio7jiDv8MDn+P8+9nhHt2gkLCuEIGfdQjPb9PahcRJeZ//igWIYRjStqCDfww1SBYszIZLPoTe"
|
|
106
|
+
"XKES/AQS5O6sUz0Kn/wzrssB9ecMfTGIq1H0AdSNeD9BDfFPRUFMyaJuXyEIayCM1xZXNkJq+DtP2dZr"
|
|
107
|
+
"QUId2pqhJObBX5vq8ZvkIWZHilUhuyozasssTkap+L0haFSsmNnidF9pGebrT9xHWlwfuF95B0JrlcHr"
|
|
108
|
+
"5SGNb26alTWfcGnL7FVGpcJfoLrLyV9TxF8T4K+R8/ctnXIU5cxDyyxBXDSXz9Ws1Je6Vsv795A3DA6w"
|
|
109
|
+
"DovcpkpF8lAk2Do3u6LdWred0c5/IzDYjX7EwimlSh7qTksxD3QPFmtUT3k0bdqFWcoW7sepLZ71ypWq"
|
|
110
|
+
"nGykkfvmzTvOsQvatBlI2RJ6LfNt5aDGdzLVypY2czsI2Vv9yjatRqtssd6X6m637oA76MYZVc765Ro5"
|
|
111
|
+
"+ZMZrSvffTY9s8yOwBGUf4Bq6d7hzdw7pbhbFXK/401FszN2pRBlSPgu4ANtc5FvkS3DG3rWlXbIeXg4"
|
|
112
|
+
"pRJF/TUnzl/RsWvuIefxjouNvd1KeIHBvfYWH9D/OdAfm6nKVEXSWp3tBMcx2oZHkV+bcT8MxUj3a3yV"
|
|
113
|
+
"pJXtvctq7ti7p82oSEEwS+tt02UD/Lw+oDDizfUkh/k8h6cmOWR0IM1aZiBjRbqGxfajLiEestou/gTF"
|
|
114
|
+
"4uG1lOJrx0Orj9lBPPK2JjBfaSoN3qeBqffB1Fed7FmvyWQiN3U427kPwKELr7grjlSt8kZ3hw8o5pcm"
|
|
115
|
+
"89qZFI87lcW3KY3TZI+u0HRsNne4xADY7xwMxgXAKTIaAHWaMbdXbWwxKtpmtTgnDoQt5mjQvBkYZIgf"
|
|
116
|
+
"1UWvuRy9hq6HoNE5lC2EXF0cNldYKIsutUe1iOdl5nnt5nmRAq+c6ITtUxbfD9xa9GX2ByHIpyzWmrKD"
|
|
117
|
+
"q+Th6W3RiWqOTlQO3fLEi2sz3jcDMbmixTl8mtCV2SvgqnfMyrWlweeYkIbcBY5rOuGyPzhtjtK3QrZh"
|
|
118
|
+
"/nVKziQPr3j//sA7S9/WkDKY6PGriM7J3gdBcUrXIQ5y0De6f7zInjPgDVo0qjeKvDBpCyFjzFR5e+gL"
|
|
119
|
+
"GLrlotP85BPPT2UU/BgeaLsx27coPKOTiPl/dlxeXsv/4hjfXZQhHeOWWDC2FHzLFXXvrkn31kXd20oX"
|
|
120
|
+
"t+zfNYW/32L+fl3/yq+yR0s0YgLIZ6kyMyKxezbE+fWBk6Rxb2lQlTk/Ek1q1w5O9pYs88XJuX5zkkyD"
|
|
121
|
+
"5viladeJYayfDONuHzsQuQoGTKPG8M4iMh+dZDI2Vlnj4nVBdny8/u/41/2b/Hddm/9D+mT+W/5n/L/F"
|
|
122
|
+
"8++O0yLMf/dHiJ91rEUD3jXUWu10o6IjP9BS0mafW9LeapkzVS4qwqfbSxTU1daoIjyki1Lp8kVevGpx"
|
|
123
|
+
"stNYm0IFtPcDq2lud0XQ+6qlbaMuJMbxeDSOy/XyPx8omRJVYCqqwH9kRPEmVV2irHlDJnADxPhTW5wg"
|
|
124
|
+
"5plYzOknKuZP5NzBDgQn4MSL36la8M4AVXwKJNqmUsG64azfztxoY8fu4d6vxqpAQcKcJyvyrr9Fw+Qw"
|
|
125
|
+
"RG6bVosXhQVp1nvbnKoc8y2g+aWGjIdnQ3rCuPy32WHAMAcR9rFqUZk3sukCs1Oq7D+rxtEen+dAj7AE"
|
|
126
|
+
"4Adb4OvrIb9smfLK3kqzr1v1uqpG0xl6djS9xSTRu85rxs9OJfjy7RktzsBRmdFHPELkFLqiK9RWRdQ/"
|
|
127
|
+
"EWb/2IyVrJD0+UujSY8oayp1NTBPW+ZsgoRVF6jabSdJV1dpsKNVbrS3OffvzgSqvA4obgCeZIIOzOR5"
|
|
128
|
+
"tSSs6dFYEJZAfwbMiwlGv2uW7DZlZFzRo6ywendlKfEtvQRwPJpmY8V5ambFRdeVKehpBt//45M6M5CR"
|
|
129
|
+
"wkecRxmcpcR1gwrCxXRrF7UK5mKAkYcs/du57AqL9/tamL0V2lZGW9GDI6MPh45BsYqNX1s7YvHciXJW"
|
|
130
|
+
"WI8po/G8Txm8D9clNtz/7gc1SpuCvJoK0WvvsAK9zjRZqgYOAnBgfSmNU9ETU2EQ6AYfhMNTGfLyUl1O"
|
|
131
|
+
"t4xRlIoFDXWL7ufaYaLUm6EsSYv6rjoup8jo+p4r4wsbvK6qAJu7ajCwRtGqwH7etKmxZvGm2lr34pot"
|
|
132
|
+
"9Q1uT+1GT2V9PUI3tS5z+tK52f9JHuqzrpWHaflfmYcnrp2HVEIesm+AwXVzWjeKGeAMTubms2JOecnp"
|
|
133
|
+
"6TlsIWCUbuYNt2i6npIPBYiKt96GHrUbIHstj4WnK0yB4CcsTMMpuLX3/KiZ+QSm2QwXPax7qX12mfsR"
|
|
134
|
+
"GEKgyKIpSd0w6DX94aRcTL5snHw7QDp11xnF5Aurdouy0BUae5HQextK6Zv7GIuKr32FHPRpcQ46+Rzc"
|
|
135
|
+
"zOyNi/Ncfq6e/wr9Ds7ChQwvxpu4QAjdMpl/sybzb5QxrzTIRYHb+aC5wpno2ENRx/p0rdFqxNdrPnPd"
|
|
136
|
+
"7dGczY3mLEO5xIX6PLPwdvDBzCldRjLl0bTp4GYWurClp5q7STtdZe+cKW8nopretjBB0xlJ7kJu8XGX"
|
|
137
|
+
"Ohl3A3Jc98OWz/HNdffc7HDUr7xt9QqUpVim9T0c7lV8206UGJBpIGiGsPcpM9q8w6QFpq9KA17eLpsK"
|
|
138
|
+
"bD6ElERpKZQCWAgawqwHP2t++n+oIf95reK6dq1CJtcq8rRYrSLc76lr3K//g/SUqeIaPzBTmamJK9IN"
|
|
139
|
+
"YoG3yqz0AA0VxEUYF3jHXIzOOHVeycruV1mQtHcgMFCo+LXsI1UpCbXYv3s//b9xv18l3M/8L2uZr86F"
|
|
140
|
+
"/wpNbgIiM7dpIjcFnGKp/Ss3Ls9jpXZE3BAOWsVl6f0C5RNQ+Fj3lqKAIFI+lTJTrKPNZlNV8LnsaCIN"
|
|
141
|
+
"odtPEqtufqSEFWv8RgYm6UEgcG+afMb+Sgvlzf44lL5IqSEF7X9AcSMLMTkDr7mpw7G4/E/HufV/Os7f"
|
|
142
|
+
"/a/GefArx7ns3xunnB8n1JywSmpBPGacJGRf41/j/9f4lBiO18FdepCf7TiPerG2D5dBiN/bRSm/jtn/"
|
|
143
|
+
"EK+DBb8AcBOtmdsqf3X6elTIKd+b3hUs5VJ/ljHC3slp/pKRnfMAl/H+jKovHJz21Zn7v2jidL+cNf7B"
|
|
144
|
+
"Ixxzapa5uJ27/qK2vfh57oaDmXtO/pBb+NfM8bK9HLtvdnb451zBy1mD4Te4on1Z4743uVvfylKWHOCs"
|
|
145
|
+
"h7Ky5b/mbB9nlQ78mltxMquq9S1u1YWs9pLfcLf9NWuPfJC7o003ODDI3blTN976Lnf3izrlikPcmld0"
|
|
146
|
+
"2SmHuXte15W+fZi7t19XtX2Iu++3uvZn3uPu/4Nuz71HuAf+qBuc8T730J914x+9zzl8euWzI5zr+/rs"
|
|
147
|
+
"b3zKlf9AL5Y6qBIK6UdhYZxGdo7fJGr5D1KEZ56rxZpjvWiL/26A/+NThOOeFP6LMOhX8HcZEq5BceeR"
|
|
148
|
+
"aI9/LqQIzzixPa6h+O/Rw8btLyliLY+E81E8BTpLh+NFSDiPcSXg0xTCs8E8JMwjxtsBn6UQ3vjjZ6Lq"
|
|
149
|
+
"uH6uB3y6OJZpcXi+aP8tif3tgOMHvzVIuH/0vusVgl0zEs5H8Y0KgXe7ZFweEd8Zh2P7R0X8BQneLuIv"
|
|
150
|
+
"S/p5WsR7JfYvivgbEvu9Ij4gse8T8SMS+9+I4x2RjPc9wKfC8Wkk+Clqf0K0/1Jif17sX0Yk9v9nhTB/"
|
|
151
|
+
"KiI2v9iepIR+ZhGJ/UylBLv5kn50Ir5Ygl8v4mYicbwmSui3mIjFD7a/lRLm8S4icR7vEvk8GMcH2z9I"
|
|
152
|
+
"Cc8hqgkhvqP25SJeG4fjOHxY5LNFwnMLJfjxe0Qs3nA/28X7PiXxw9OUELc/IGJxi/GXKWE8PyMS82Uf"
|
|
153
|
+
"JawR+wnhCzM8Dvv5N0X7oMT+HRE/LMF/K/L/WOLPEyIekYzrrIifk9hfEfu/Iukfk+OPJfZpSsF+iizR"
|
|
154
|
+
"fpZS8FuGLNFv14v28yT2uUrBb4tliX5bqRT8bJEl+nmdUpi/O2XCfEbxb4r4OpmgN1HcqRSO75fF9Afj"
|
|
155
|
+
"lSL+kAR/WCnczyWL07GFCG1VCnu7GsBnxOFPKgXeLTIh//hxMQj9CPBZcPy0TLguir8u4nsl+HtKYe/z"
|
|
156
|
+
"G8Az4/DPRPsRif0/xPtekNxXM0X0owSfK+K4fo7Hl4q4UYKvFHGTBF8v4jYJ/rCIr5Pgj4h4pQR/SsQb"
|
|
157
|
+
"JXi3iPsl+D4R75LgA1OENWovKfgpih8X8aAEvyLin0hwVaroT0n/BhH/pwRnRVwjT8SLRdwowdeJuEmC"
|
|
158
|
+
"bxBxmwRvEvF1EvxxEa+U4C+kCnnUKI9bNwF/VcTbJXi/iD8vwT8S8Z9K8HERf0uC/03EhyU4nSYcn5Tw"
|
|
159
|
+
"ZNIE+8sS+1wRT0lJxFeK+CwJfr+I3yDBN4l4gQT/nojfKcF3irhDgv84TYiPupRY3uF8P5Am5L8/RXie"
|
|
160
|
+
"G8U/SIt+8TG2vuBA+1TEFRJ8NE3QU15Do/2AT/6YJugSvgcZZ49/HlIJeQ2138QSOF5c3+BZbOI/cx2O"
|
|
161
|
+
"+oaKSo/HDUdl1RurNzc4NlduFVsbPJWVDsfGGnezo3xTpcuDjydP1dY4oBF/uAVay5fGI9CpeH19ZQOc"
|
|
162
|
+
"jzuI3c9VURGHCy3AxLP1W8qiZ7eUiVjNlk0iBi0Rq6huFLEG3KyL0thUW+uJO7kh/mRNbfTO1ZurG+Iv"
|
|
163
|
+
"j/lio9gqr3FHXVHjFjG3B38K6MaEMTXU4gP43VS5uca1aVNtefSS2q3xt4yNuKEefJnAoc5hqmxyb4nz"
|
|
164
|
+
"Q9lmxwZX9aYtMUrRpmtzdCTQioK1UedX13qiWNMk2BQD66vi/Jl41ypPguP4k9Fea9y1ngbCscG9paEe"
|
|
165
|
+
"f5RXNlU34AP+Ib2rrH5xda6Jb9dU1pS7ty12s/i3ejJGINIWl9duqlicI4mqf4WakkPuGuY4uBNQiKiv"
|
|
166
|
+
"AEwxDydaTAJJFrlSYGksMhP7mARMsThNtJgEkixypTEsGWcibLo2nBuLdQmzWsn4J4HcyenZmHjJJGCK"
|
|
167
|
+
"RXOixSSQZJG7JcnNSYgpCUm+amlcyEv6mURMsQyQmDQlIRD7X4WYkpDcuLxIusqTdJWI5Aovrao3VDZU"
|
|
168
|
+
"11SC7ro8DZAIiWglkHezJtPinMWsy1OzfOkiF/4C26IaV3ltfZNpOf7i2pJ76ys99UtqXNWbl9i34W+n"
|
|
169
|
+
"1dg9tQ9XljfUL7lvxX1L6mu3eMorl0CqNVQuARabt9QsLnfEki3aFHQ9TtgFRJJuCcdCoiVAvLgnqnuC"
|
|
170
|
+
"vEeNeX2PE/hJhXfE5tYR0/goyot8TJXiZT5BJJOFPkGw4qU+XuvjxT7moo3RJi/3k3ofRUXBT1D86DlB"
|
|
171
|
+
"8h2C5jsE0XfEssCRJPuJup8k/I545Y9KvyNO+x0J4j+p/o54+Z/Uf0fCAjC5AjgSloDENcCRsAhcYxWI"
|
|
172
|
+
"XwaEVYD/LHfgdcDBH8evBI5rLgVx4SlmlDQO/yVsukaUXuuC2HoQF5ZfhZjiIlNiE9OqJCQ3CVkaF8uS"
|
|
173
|
+
"fmLrQlxkS2xi0p6E5CaFvXTQksXhK/DcuPyQMqyVeiO2QMQljOSq2BIRF/sSm9gikYTkOpKXiWTIlAxd"
|
|
174
|
+
"48KljuSlIhkyOZIWC0fyauFIXi6SIVMylOtIXjGSIVMylOu49qLhuNaqsdohlPTiXyjqo1X9ahz4eA/w"
|
|
175
|
+
"3wNrmpc="
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def load_bignum_bc():
|
|
180
|
+
data = zlib.decompress(base64.b64decode(_B64))
|
|
181
|
+
return binding.parse_bitcode(data)
|
|
@@ -79,7 +79,7 @@ class Node:
|
|
|
79
79
|
|
|
80
80
|
class Number(Node):
|
|
81
81
|
inferred_type: str | None
|
|
82
|
-
__slots__ = ("_token", "inferred_type", "
|
|
82
|
+
__slots__ = ("_token", "inferred_type", "is_bool", "value")
|
|
83
83
|
|
|
84
84
|
def __init__(self, value: str, token=None, is_bool: bool = False):
|
|
85
85
|
self.value = value
|
|
@@ -115,12 +115,12 @@ class FString(Node):
|
|
|
115
115
|
|
|
116
116
|
class Variable(Node):
|
|
117
117
|
__slots__ = (
|
|
118
|
+
"_dunder_via",
|
|
118
119
|
"_token",
|
|
119
120
|
"const_value",
|
|
120
121
|
"dynamic",
|
|
121
122
|
"inferred_type",
|
|
122
123
|
"name",
|
|
123
|
-
"_dunder_via",
|
|
124
124
|
)
|
|
125
125
|
|
|
126
126
|
def __init__(self, name: str, token=None):
|
|
@@ -155,8 +155,8 @@ class Call(Node):
|
|
|
155
155
|
"args",
|
|
156
156
|
"callee",
|
|
157
157
|
"inferred_type",
|
|
158
|
-
"param_types",
|
|
159
158
|
"meta",
|
|
159
|
+
"param_types",
|
|
160
160
|
)
|
|
161
161
|
|
|
162
162
|
def __init__(self, callee, args: list, token=None):
|
|
@@ -267,7 +267,7 @@ class IfExp(Node):
|
|
|
267
267
|
"""
|
|
268
268
|
|
|
269
269
|
inferred_type: str | None
|
|
270
|
-
__slots__ = ("_token", "
|
|
270
|
+
__slots__ = ("_token", "body", "cond", "inferred_type", "orelse")
|
|
271
271
|
|
|
272
272
|
def __init__(self, body, cond, orelse, token=None):
|
|
273
273
|
self.body = body
|
|
@@ -284,13 +284,13 @@ class CCode(Node):
|
|
|
284
284
|
inferred_type: str | None
|
|
285
285
|
__slots__ = (
|
|
286
286
|
"_token",
|
|
287
|
+
"includes",
|
|
287
288
|
"inferred_type",
|
|
289
|
+
"src_file",
|
|
290
|
+
"src_line",
|
|
288
291
|
"symbols",
|
|
289
292
|
"value",
|
|
290
293
|
"var_names",
|
|
291
|
-
"includes",
|
|
292
|
-
"src_file",
|
|
293
|
-
"src_line",
|
|
294
294
|
)
|
|
295
295
|
|
|
296
296
|
def __init__(self, value: str, token=None):
|
|
@@ -1690,14 +1690,14 @@ def parse_dataclass_class(tokens: list[Token], pos: int):
|
|
|
1690
1690
|
return parse_class(tokens, pos, sealed=sealed, dataclass=True)
|
|
1691
1691
|
|
|
1692
1692
|
|
|
1693
|
-
|
|
1694
1693
|
def parse_protocol_class(tokens: list[Token], pos: int):
|
|
1695
1694
|
"""Parse `interface I:` or `protocol I:` as a protocol definition."""
|
|
1696
1695
|
tok = tokens[pos]
|
|
1697
1696
|
pos += 1
|
|
1698
1697
|
if pos >= len(tokens) or tokens[pos].type != TokenType.IDENTIFIER:
|
|
1699
1698
|
raise ParseError(
|
|
1700
|
-
"Expected interface/protocol name",
|
|
1699
|
+
"Expected interface/protocol name",
|
|
1700
|
+
tokens[pos] if pos < len(tokens) else None,
|
|
1701
1701
|
)
|
|
1702
1702
|
name = tokens[pos].value
|
|
1703
1703
|
assert name is not None
|
|
@@ -1708,7 +1708,8 @@ def parse_protocol_class(tokens: list[Token], pos: int):
|
|
|
1708
1708
|
pos += 1
|
|
1709
1709
|
if pos >= len(tokens) or tokens[pos].type != TokenType.IDENTIFIER:
|
|
1710
1710
|
raise ParseError(
|
|
1711
|
-
"Expected base protocol name",
|
|
1711
|
+
"Expected base protocol name",
|
|
1712
|
+
tokens[pos] if pos < len(tokens) else None,
|
|
1712
1713
|
)
|
|
1713
1714
|
base = tokens[pos].value
|
|
1714
1715
|
pos += 1
|
|
@@ -2315,7 +2316,7 @@ class Raise(Node):
|
|
|
2315
2316
|
|
|
2316
2317
|
|
|
2317
2318
|
class NewExpr(Node):
|
|
2318
|
-
__slots__ = ("_token", "
|
|
2319
|
+
__slots__ = ("_token", "args", "inferred_type", "size", "type_expr")
|
|
2319
2320
|
|
|
2320
2321
|
def __init__(self, type_expr, size=None, token=None, args=None):
|
|
2321
2322
|
self.type_expr = type_expr
|
|
@@ -2333,7 +2334,7 @@ class NewExpr(Node):
|
|
|
2333
2334
|
|
|
2334
2335
|
|
|
2335
2336
|
class Deref(Node):
|
|
2336
|
-
__slots__ = ("_token", "
|
|
2337
|
+
__slots__ = ("_token", "inferred_type", "operand")
|
|
2337
2338
|
|
|
2338
2339
|
def __init__(self, operand, token=None):
|
|
2339
2340
|
self.operand = operand
|
|
@@ -2345,7 +2346,7 @@ class Deref(Node):
|
|
|
2345
2346
|
|
|
2346
2347
|
|
|
2347
2348
|
class AddrOf(Node):
|
|
2348
|
-
__slots__ = ("_token", "
|
|
2349
|
+
__slots__ = ("_token", "inferred_type", "operand")
|
|
2349
2350
|
|
|
2350
2351
|
def __init__(self, operand, token=None):
|
|
2351
2352
|
self.operand = operand
|
|
@@ -2357,7 +2358,7 @@ class AddrOf(Node):
|
|
|
2357
2358
|
|
|
2358
2359
|
|
|
2359
2360
|
class SizeOf(Node):
|
|
2360
|
-
__slots__ = ("_token", "
|
|
2361
|
+
__slots__ = ("_token", "resolved_type", "type_expr")
|
|
2361
2362
|
|
|
2362
2363
|
def __init__(self, type_expr, token=None):
|
|
2363
2364
|
self.type_expr = type_expr
|
|
@@ -2373,7 +2374,7 @@ class SizeOf(Node):
|
|
|
2373
2374
|
|
|
2374
2375
|
|
|
2375
2376
|
class CastExpr(Node):
|
|
2376
|
-
__slots__ = ("_token", "
|
|
2377
|
+
__slots__ = ("_token", "expr", "inferred_type", "type_expr")
|
|
2377
2378
|
|
|
2378
2379
|
def __init__(self, type_expr: str, expr, token=None):
|
|
2379
2380
|
self.type_expr = type_expr
|
|
@@ -2394,7 +2395,7 @@ class AsExpr(Node):
|
|
|
2394
2395
|
`as` that fails yields null rather than silently re-typing the pointer.
|
|
2395
2396
|
"""
|
|
2396
2397
|
|
|
2397
|
-
__slots__ = ("_token", "
|
|
2398
|
+
__slots__ = ("_token", "expr", "inferred_type", "meta", "type_expr")
|
|
2398
2399
|
|
|
2399
2400
|
def __init__(self, type_expr: str, expr, token=None):
|
|
2400
2401
|
self.type_expr = type_expr
|
|
@@ -2414,7 +2415,7 @@ class BorrowExpr(Node):
|
|
|
2414
2415
|
the semantic/ownership pass enforces borrow rules.
|
|
2415
2416
|
"""
|
|
2416
2417
|
|
|
2417
|
-
__slots__ = ("_token", "
|
|
2418
|
+
__slots__ = ("_token", "inferred_type", "mutable", "operand")
|
|
2418
2419
|
|
|
2419
2420
|
def __init__(self, operand, mutable: bool = False, token=None):
|
|
2420
2421
|
self.operand = operand
|
|
@@ -2433,7 +2434,7 @@ class MoveExpr(Node):
|
|
|
2433
2434
|
used afterward unless it is reassigned.
|
|
2434
2435
|
"""
|
|
2435
2436
|
|
|
2436
|
-
__slots__ = ("_token", "
|
|
2437
|
+
__slots__ = ("_token", "inferred_type", "operand")
|
|
2437
2438
|
|
|
2438
2439
|
def __init__(self, operand, token=None):
|
|
2439
2440
|
self.operand = operand
|
|
@@ -2471,7 +2472,7 @@ class DelStmt(Node):
|
|
|
2471
2472
|
`del obj.field` / `del arr[i]` / `del *p` clear the addressed slot.
|
|
2472
2473
|
"""
|
|
2473
2474
|
|
|
2474
|
-
__slots__ = ("_token", "
|
|
2475
|
+
__slots__ = ("_token", "del_kind", "target")
|
|
2475
2476
|
|
|
2476
2477
|
def __init__(self, target, token=None):
|
|
2477
2478
|
self.target = target
|
|
@@ -2540,12 +2541,12 @@ class ClassDef(Node):
|
|
|
2540
2541
|
"dataclass",
|
|
2541
2542
|
"fields",
|
|
2542
2543
|
"generic_params",
|
|
2544
|
+
"is_protocol",
|
|
2543
2545
|
"methods",
|
|
2544
2546
|
"module",
|
|
2545
2547
|
"name",
|
|
2546
2548
|
"properties",
|
|
2547
2549
|
"sealed",
|
|
2548
|
-
"is_protocol",
|
|
2549
2550
|
)
|
|
2550
2551
|
|
|
2551
2552
|
def __init__(
|
|
@@ -2579,9 +2580,18 @@ class ClassDef(Node):
|
|
|
2579
2580
|
return f"ClassDef({seal}{dc}{self.name}, base={self.base}, fields={self.fields}, properties={self.properties}, methods={self.methods})"
|
|
2580
2581
|
|
|
2581
2582
|
|
|
2582
|
-
|
|
2583
2583
|
class ProtocolDef(Node):
|
|
2584
|
-
__slots__ = (
|
|
2584
|
+
__slots__ = (
|
|
2585
|
+
"_token",
|
|
2586
|
+
"base",
|
|
2587
|
+
"fields",
|
|
2588
|
+
"generic_params",
|
|
2589
|
+
"is_protocol",
|
|
2590
|
+
"methods",
|
|
2591
|
+
"name",
|
|
2592
|
+
"properties",
|
|
2593
|
+
"sealed",
|
|
2594
|
+
)
|
|
2585
2595
|
|
|
2586
2596
|
def __init__(
|
|
2587
2597
|
self,
|
|
@@ -2614,7 +2624,7 @@ InterfaceDef = ProtocolDef
|
|
|
2614
2624
|
class PropertyDef(Node):
|
|
2615
2625
|
"""A `property name:` block holding paired `get`/`set` accessor bodies."""
|
|
2616
2626
|
|
|
2617
|
-
__slots__ = ("
|
|
2627
|
+
__slots__ = ("_ptype", "_token", "get", "name", "set")
|
|
2618
2628
|
|
|
2619
2629
|
def __init__(self, name: str, get, set=None, token=None):
|
|
2620
2630
|
self.name = name
|
|
@@ -3611,9 +3621,7 @@ def parse_expr_stmt(tokens: list[Token], pos: int):
|
|
|
3611
3621
|
token=tok,
|
|
3612
3622
|
),
|
|
3613
3623
|
token=tok,
|
|
3614
|
-
compound_op=(
|
|
3615
|
-
binop_op if not isinstance(target, Variable) else None
|
|
3616
|
-
),
|
|
3624
|
+
compound_op=(binop_op if not isinstance(target, Variable) else None),
|
|
3617
3625
|
), pos
|
|
3618
3626
|
|
|
3619
3627
|
_expect_newline(tokens, pos, tok)
|
|
@@ -998,6 +998,57 @@ class LLVM:
|
|
|
998
998
|
fn = ir.Function(self.module, ir.FunctionType(ret, args), name=name)
|
|
999
999
|
self.functions[name] = fn
|
|
1000
1000
|
|
|
1001
|
+
# Runpy dynamic class/runtime
|
|
1002
|
+
void_ptr = _i8ptr
|
|
1003
|
+
table_ptr = ir.PointerType(ir.LiteralStructType([]))
|
|
1004
|
+
class_ptr = _i8ptr
|
|
1005
|
+
func_ptr = _i8ptr
|
|
1006
|
+
runpy_fns = [
|
|
1007
|
+
("create_table", table_ptr, [_i64]),
|
|
1008
|
+
("hashmap_put", table_ptr, [table_ptr, void_ptr, void_ptr]),
|
|
1009
|
+
("hashmap_get", void_ptr, [table_ptr, void_ptr]),
|
|
1010
|
+
("hashmap_contains", _i32, [table_ptr, void_ptr]),
|
|
1011
|
+
("hashmap_erase", table_ptr, [table_ptr, void_ptr]),
|
|
1012
|
+
("hashmap_destroy", _void, [table_ptr]),
|
|
1013
|
+
("hashmap_is_valid", _i32, [table_ptr]),
|
|
1014
|
+
("hashmap_size", _i64, [table_ptr]),
|
|
1015
|
+
("hashmap_is_empty", _i32, [table_ptr]),
|
|
1016
|
+
("runpy_create_function", func_ptr, [_i32, void_ptr, void_ptr]),
|
|
1017
|
+
("runpy_create_tables", table_ptr, []),
|
|
1018
|
+
("runpy_create_class", class_ptr, [_i64]),
|
|
1019
|
+
("runpy_destroy_class", _void, [class_ptr]),
|
|
1020
|
+
("runpy_class_addfunc", class_ptr, [func_ptr, class_ptr]),
|
|
1021
|
+
("runpy_class_delfunc", class_ptr, [func_ptr, class_ptr]),
|
|
1022
|
+
("runpy_class_updfunc", class_ptr, [func_ptr, func_ptr, class_ptr]),
|
|
1023
|
+
("runpy_function_call", _void, [func_ptr, void_ptr]),
|
|
1024
|
+
("runpy_class_getfunc", func_ptr, [class_ptr, void_ptr]),
|
|
1025
|
+
("runpy_class_hasfunc", _i32, [class_ptr, void_ptr]),
|
|
1026
|
+
("runpy_class_replace_table", class_ptr, [class_ptr, table_ptr]),
|
|
1027
|
+
("runpy_class_get_table", table_ptr, [class_ptr]),
|
|
1028
|
+
("runpy_class_get_index", _i64, [class_ptr]),
|
|
1029
|
+
("runpy_class_set_index", _void, [class_ptr, _i64]),
|
|
1030
|
+
("runpy_function_get_impl", void_ptr, [func_ptr]),
|
|
1031
|
+
("runpy_function_set_impl", _void, [func_ptr, void_ptr]),
|
|
1032
|
+
("runpy_function_get_name", void_ptr, [func_ptr]),
|
|
1033
|
+
("runpy_function_get_signature", _i32, [func_ptr]),
|
|
1034
|
+
("runpy_function_get_generation", _i64, [func_ptr]),
|
|
1035
|
+
("runpy_table_clone", table_ptr, [table_ptr]),
|
|
1036
|
+
("runpy_table_merge", _i32, [table_ptr, table_ptr]),
|
|
1037
|
+
("runpy_class_hotswap", _i32, [class_ptr, table_ptr]),
|
|
1038
|
+
("runpy_class_redirect", _i32, [class_ptr, class_ptr]),
|
|
1039
|
+
(
|
|
1040
|
+
"runpy_class_lookup_or_inherit",
|
|
1041
|
+
func_ptr,
|
|
1042
|
+
[class_ptr, void_ptr, class_ptr],
|
|
1043
|
+
),
|
|
1044
|
+
]
|
|
1045
|
+
for name, ret, args in runpy_fns:
|
|
1046
|
+
try:
|
|
1047
|
+
fn = ir.Function(self.module, ir.FunctionType(ret, args), name=name)
|
|
1048
|
+
self.functions[name] = fn
|
|
1049
|
+
except Exception:
|
|
1050
|
+
pass
|
|
1051
|
+
|
|
1001
1052
|
self.dyn_types = {}
|
|
1002
1053
|
|
|
1003
1054
|
# Concurrent tri-color GC runtime functions (ugc-based)
|
|
@@ -5749,12 +5800,8 @@ class LLVM:
|
|
|
5749
5800
|
target = node.target
|
|
5750
5801
|
meta = getattr(target, "meta", None) or {}
|
|
5751
5802
|
cls = meta.get("cls")
|
|
5752
|
-
getter = self.functions.get(
|
|
5753
|
-
|
|
5754
|
-
)
|
|
5755
|
-
setter = self.functions.get(
|
|
5756
|
-
f"{cls}.{target.name}.set" if cls else None
|
|
5757
|
-
)
|
|
5803
|
+
getter = self.functions.get(f"{cls}.{target.name}.get" if cls else None)
|
|
5804
|
+
setter = self.functions.get(f"{cls}.{target.name}.set" if cls else None)
|
|
5758
5805
|
if getter is None or setter is None:
|
|
5759
5806
|
raise Exception(
|
|
5760
5807
|
f"property accessor for `{cls}.{target.name}` not compiled"
|
|
@@ -5789,9 +5836,7 @@ class LLVM:
|
|
|
5789
5836
|
and (getattr(node.target, "meta", None) or {}).get("kind") == "prop_set"
|
|
5790
5837
|
):
|
|
5791
5838
|
if isinstance(node.target, Index) and not self.no_userspace:
|
|
5792
|
-
obj_t = _bc_array_norm(
|
|
5793
|
-
getattr(node.target.obj, "inferred_type", None)
|
|
5794
|
-
)
|
|
5839
|
+
obj_t = _bc_array_norm(getattr(node.target.obj, "inferred_type", None))
|
|
5795
5840
|
if (
|
|
5796
5841
|
obj_t == "dynamic"
|
|
5797
5842
|
or obj_t == "dynamic[]"
|
|
@@ -6677,7 +6722,6 @@ class LLVM:
|
|
|
6677
6722
|
f"L{node._token.line}:{node._token.column}"
|
|
6678
6723
|
)
|
|
6679
6724
|
|
|
6680
|
-
|
|
6681
6725
|
def _emit_class_meta(self):
|
|
6682
6726
|
if getattr(self, "_class_meta_emitted", False):
|
|
6683
6727
|
return
|
|
@@ -6687,31 +6731,49 @@ class LLVM:
|
|
|
6687
6731
|
return
|
|
6688
6732
|
# Minimal struct: classid(i64), name(i8*), size_bytes(i64), is_virtual(i1), is_sealed(i1), is_dataclass(i1), vt_ptr(i8*)
|
|
6689
6733
|
from llvmlite import ir
|
|
6690
|
-
|
|
6691
|
-
|
|
6692
|
-
|
|
6693
|
-
|
|
6694
|
-
|
|
6695
|
-
|
|
6696
|
-
|
|
6697
|
-
|
|
6698
|
-
|
|
6734
|
+
|
|
6735
|
+
meta_ty = ir.LiteralStructType(
|
|
6736
|
+
[
|
|
6737
|
+
_i64, # classid
|
|
6738
|
+
_i8ptr, # name
|
|
6739
|
+
_i64, # size_bytes
|
|
6740
|
+
_i1, # is_virtual
|
|
6741
|
+
_i1, # is_sealed
|
|
6742
|
+
_i1, # is_dataclass
|
|
6743
|
+
_i8ptr, # vt_ptr
|
|
6744
|
+
]
|
|
6745
|
+
)
|
|
6699
6746
|
for c in classes:
|
|
6700
6747
|
cid = self._class_ids.get(c, -1)
|
|
6701
6748
|
node = self._struct_nodes.get(c)
|
|
6702
6749
|
name_cstr = self._const_string(c)
|
|
6703
6750
|
# size: sizeof identified struct (approx) - use LLVM type
|
|
6704
|
-
cls_ty = self.structs.get(c) or (
|
|
6751
|
+
cls_ty = self.structs.get(c) or (
|
|
6752
|
+
self._module_structs.get((self._cur_module, c))
|
|
6753
|
+
if self._cur_module
|
|
6754
|
+
else None
|
|
6755
|
+
)
|
|
6705
6756
|
if cls_ty is None:
|
|
6706
6757
|
cls_ty = self._module_structs.get((None, c))
|
|
6707
|
-
size =
|
|
6758
|
+
size = (
|
|
6759
|
+
ir.Constant(_i64, cls_ty.get_abi_size(self.target_data))
|
|
6760
|
+
if hasattr(cls_ty, "get_abi_size")
|
|
6761
|
+
else ir.Constant(_i64, 0)
|
|
6762
|
+
)
|
|
6708
6763
|
is_v = ir.Constant(_i1, 1 if self._class_virtual.get(c) else 0)
|
|
6709
|
-
is_s = ir.Constant(_i1, 1 if getattr(node,
|
|
6710
|
-
is_d = ir.Constant(_i1, 1 if getattr(node,
|
|
6764
|
+
is_s = ir.Constant(_i1, 1 if getattr(node, "sealed", False) else 0)
|
|
6765
|
+
is_d = ir.Constant(_i1, 1 if getattr(node, "dataclass", False) else 0)
|
|
6711
6766
|
vt_g = self._vt_globals.get(c)
|
|
6712
|
-
vt_ptr =
|
|
6767
|
+
vt_ptr = (
|
|
6768
|
+
self.builder.bitcast(vt_g, _i8ptr)
|
|
6769
|
+
if vt_g is not None
|
|
6770
|
+
else ir.Constant(_i8ptr, None)
|
|
6771
|
+
)
|
|
6713
6772
|
g = ir.GlobalVariable(self.module, meta_ty, name=f"cm.meta.{c}")
|
|
6714
|
-
g.initializer = ir.Constant(
|
|
6773
|
+
g.initializer = ir.Constant(
|
|
6774
|
+
meta_ty,
|
|
6775
|
+
[ir.Constant(_i64, cid), name_cstr, size, is_v, is_s, is_d, vt_ptr],
|
|
6776
|
+
)
|
|
6715
6777
|
self._class_meta_globals[c] = g
|
|
6716
6778
|
|
|
6717
6779
|
def _emit_ancestor_grid(self):
|