修正了 args 传参问题

This commit is contained in:
TermiNexus committed 2026-07-31 17:15:54 +08:00
1 parent fcd4d8a438
commit 4e17365b76
86 files changed
+417 -208

No files matched your search

@@ -1 +1 @@
{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"}
{"stdio": "285b6aa29a34754d", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7"}
@@ -1 +0,0 @@
6f62fe05c5ea1ceb|7e529fe7a078cfef|bbdf3bbd4c3bc28c|f5522571bcce7bcb
@@ -0,0 +1,23 @@
"""
Auto-generated Python stub file from stdio.vp
Module: stdio
"""
import t, c
def printf(fmt: t.CConst | str, *args) -> int | t.State: pass
def fprintf(stream: bytes, fmt: t.CConst | str, *args) -> int | t.State: pass
def sprintf(buf: bytes, fmt: t.CConst | str, *args) -> int | t.State: pass
def snprintf(buf: bytes, size: t.CSizeT, fmt: t.CConst | str, *args) -> int | t.State: pass
def puts(s: t.CConst | str) -> int | t.State: pass
def fputs(s: t.CConst | str, stream: bytes) -> int | t.State: pass
def fgets(buf: bytes, size: int, stream: bytes) -> bytes | t.State: pass
def fflush(stream: bytes) -> int | t.State: pass
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from main.py
Auto-generated Python stub file from main.vp
Module: main
"""
@@ -1,28 +0,0 @@
"""
Auto-generated Python stub file from stdio.py
Module: stdio
"""
import t, c
def printf(fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
def fprintf(stream: bytes, fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
def sprintf(buf: bytes, fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
def snprintf(buf: bytes, size: t.CSizeT, fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
def puts(s: t.CConst | str) -> t.CInt | t.State: pass
def fputs(s: t.CConst | str, stream: bytes) -> t.CInt | t.State: pass
def fgets(buf: bytes, size: t.CInt, stream: bytes) -> bytes | t.State: pass
def fflush(stream: bytes) -> t.CInt | t.State: pass
stdin: t.CExtern | bytes
stdout: t.CExtern | bytes
stderr: t.CExtern | bytes
@@ -0,0 +1 @@
285b6aa29a34754d|bbdf3bbd4c3bc28c|f5522571bcce7bcb|fc980acec33d69a7
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from testcheck.py
Auto-generated Python stub file from testcheck.vp
Module: testcheck
"""
@@ -1 +1 @@
{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ClosureCallTest\\App\\main.py": {"sha1": "5a548a4b33e11918", "mtime": 1784696610.9944813, "size": 1060}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784566611.838851, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}}
{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ClosureCallTest\\App\\main.vp": {"sha1": "5a548a4b33e11918", "mtime": 1784741370.3345914, "size": 1060}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.vp": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.vp": {"sha1": "285b6aa29a34754d", "mtime": 1785332415.1829746, "size": 561}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.vp": {"sha1": "748d0424e8976fa0", "mtime": 1785332415.20287, "size": 1919}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.vp": {"sha1": "fc980acec33d69a7", "mtime": 1785332415.2228394, "size": 2653}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.vp": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}}
+6 -6
View File
@@ -1,6 +1,6 @@
14d33679f7fadf1f:includes/testcheck.py
5a548a4b33e11918:main.py
6f62fe05c5ea1ceb:includes/stdio.py
7e529fe7a078cfef:includes/w32\win32base.py
bbdf3bbd4c3bc28c:includes/w32\win32console.py
f5522571bcce7bcb:includes/stdint.py
285b6aa29a34754d:includes/stdio.vp
5a548a4b33e11918:main.vp
748d0424e8976fa0:includes/testcheck.vp
bbdf3bbd4c3bc28c:includes/w32\win32console.vp
f5522571bcce7bcb:includes/stdint.vp
fc980acec33d69a7:includes/w32\win32base.vp
@@ -1 +1 @@
7e529fe7a078cfef|f5522571bcce7bcb
f5522571bcce7bcb|fc980acec33d69a7
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from w32.win32console.py
Auto-generated Python stub file from w32.win32console.vp
Module: w32.win32console
"""
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from stdint.py
Auto-generated Python stub file from stdint.vp
Module: stdint
"""
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from w32.win32base.py
Auto-generated Python stub file from w32.win32base.vp
Module: w32.win32base
"""
@@ -12,7 +12,7 @@ from stdint import *
HANDLE: t.CTypedef = VOIDPTR
LPCSTR: t.CTypedef = t.CConst | t.CChar | t.CPtr
LPCWSTR: t.CTypedef = t.CConst | t.CUnsignedShort | t.CPtr
INVALID_HANDLE_VALUE: t.CDefine = t.CVoid(-1)
INVALID_HANDLE_VALUE: t.CDefine = -1
NULL: t.CDefine = 0
TRUE: t.CDefine = 1
FALSE: t.CDefine = 0
@@ -1 +1 @@
{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb"}
{"stdio": "285b6aa29a34754d", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7"}
@@ -0,0 +1 @@
{"stdio": "285b6aa29a34754d", "main": "52e6b51da061882f", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7"}
Binary file not shown.
@@ -0,0 +1 @@
{"stdio": "285b6aa29a34754d", "main": "52e6b51da061882f", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7"}
@@ -0,0 +1 @@
{"stdio": "285b6aa29a34754d", "main": "52e6b51da061882f", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7"}
@@ -1 +0,0 @@
6f62fe05c5ea1ceb|7e529fe7a078cfef|bbdf3bbd4c3bc28c|f5522571bcce7bcb
@@ -0,0 +1,23 @@
"""
Auto-generated Python stub file from stdio.vp
Module: stdio
"""
import t, c
def printf(fmt: t.CConst | str, *args) -> int | t.State: pass
def fprintf(stream: bytes, fmt: t.CConst | str, *args) -> int | t.State: pass
def sprintf(buf: bytes, fmt: t.CConst | str, *args) -> int | t.State: pass
def snprintf(buf: bytes, size: t.CSizeT, fmt: t.CConst | str, *args) -> int | t.State: pass
def puts(s: t.CConst | str) -> int | t.State: pass
def fputs(s: t.CConst | str, stream: bytes) -> int | t.State: pass
def fgets(buf: bytes, size: int, stream: bytes) -> bytes | t.State: pass
def fflush(stream: bytes) -> int | t.State: pass
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from main.py
Auto-generated Python stub file from main.vp
Module: main
"""
@@ -1,28 +0,0 @@
"""
Auto-generated Python stub file from stdio.py
Module: stdio
"""
import t, c
def printf(fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
def fprintf(stream: bytes, fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
def sprintf(buf: bytes, fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
def snprintf(buf: bytes, size: t.CSizeT, fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
def puts(s: t.CConst | str) -> t.CInt | t.State: pass
def fputs(s: t.CConst | str, stream: bytes) -> t.CInt | t.State: pass
def fgets(buf: bytes, size: t.CInt, stream: bytes) -> bytes | t.State: pass
def fflush(stream: bytes) -> t.CInt | t.State: pass
stdin: t.CExtern | bytes
stdout: t.CExtern | bytes
stderr: t.CExtern | bytes
@@ -0,0 +1 @@
285b6aa29a34754d|bbdf3bbd4c3bc28c|f5522571bcce7bcb|fc980acec33d69a7
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from testcheck.py
Auto-generated Python stub file from testcheck.vp
Module: testcheck
"""
+1 -1
View File
@@ -1 +1 @@
{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ClosureTest\\App\\main.py": {"sha1": "52e6b51da061882f", "mtime": 1782266177.611862, "size": 5497}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784566611.838851, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}}
{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\ClosureTest\\App\\main.vp": {"sha1": "52e6b51da061882f", "mtime": 1782266177.611862, "size": 5497}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.vp": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.vp": {"sha1": "285b6aa29a34754d", "mtime": 1785332415.1829746, "size": 561}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.vp": {"sha1": "748d0424e8976fa0", "mtime": 1785332415.20287, "size": 1919}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.vp": {"sha1": "fc980acec33d69a7", "mtime": 1785332415.2228394, "size": 2653}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.vp": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}}
+6 -6
View File
@@ -1,6 +1,6 @@
14d33679f7fadf1f:includes/testcheck.py
52e6b51da061882f:main.py
6f62fe05c5ea1ceb:includes/stdio.py
7e529fe7a078cfef:includes/w32\win32base.py
bbdf3bbd4c3bc28c:includes/w32\win32console.py
f5522571bcce7bcb:includes/stdint.py
285b6aa29a34754d:includes/stdio.vp
52e6b51da061882f:main.vp
748d0424e8976fa0:includes/testcheck.vp
bbdf3bbd4c3bc28c:includes/w32\win32console.vp
f5522571bcce7bcb:includes/stdint.vp
fc980acec33d69a7:includes/w32\win32base.vp
@@ -1 +1 @@
7e529fe7a078cfef|f5522571bcce7bcb
f5522571bcce7bcb|fc980acec33d69a7
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from w32.win32console.py
Auto-generated Python stub file from w32.win32console.vp
Module: w32.win32console
"""
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from stdint.py
Auto-generated Python stub file from stdint.vp
Module: stdint
"""
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from w32.win32base.py
Auto-generated Python stub file from w32.win32base.vp
Module: w32.win32base
"""
@@ -12,7 +12,7 @@ from stdint import *
HANDLE: t.CTypedef = VOIDPTR
LPCSTR: t.CTypedef = t.CConst | t.CChar | t.CPtr
LPCWSTR: t.CTypedef = t.CConst | t.CUnsignedShort | t.CPtr
INVALID_HANDLE_VALUE: t.CDefine = t.CVoid(-1)
INVALID_HANDLE_VALUE: t.CDefine = -1
NULL: t.CDefine = 0
TRUE: t.CDefine = 1
FALSE: t.CDefine = 0
@@ -0,0 +1 @@
{"stdio": "285b6aa29a34754d", "viperlib": "3ed8c578036234a7", "stdarg": "71e0a3ffcb3ebfad", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "main": "c1416dfae155d6e2", "viperio": "c9f4be41ca1cc2b4", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7", "string": "ffaf70367668b227", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "72dbbb563aa943b0", "fileio": "72dbbb563aa943b0", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"}
@@ -0,0 +1 @@
{"stdio": "285b6aa29a34754d", "viperlib": "3ed8c578036234a7", "stdarg": "71e0a3ffcb3ebfad", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "main": "c1416dfae155d6e2", "viperio": "c9f4be41ca1cc2b4", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7", "string": "ffaf70367668b227", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "72dbbb563aa943b0", "fileio": "72dbbb563aa943b0", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"}
@@ -0,0 +1 @@
{"stdio": "285b6aa29a34754d", "viperlib": "3ed8c578036234a7", "stdarg": "71e0a3ffcb3ebfad", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "main": "c1416dfae155d6e2", "viperio": "c9f4be41ca1cc2b4", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7", "string": "ffaf70367668b227", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "72dbbb563aa943b0", "fileio": "72dbbb563aa943b0", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"}
@@ -0,0 +1 @@
{"stdio": "285b6aa29a34754d", "viperlib": "3ed8c578036234a7", "stdarg": "71e0a3ffcb3ebfad", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "main": "c1416dfae155d6e2", "viperio": "c9f4be41ca1cc2b4", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7", "string": "ffaf70367668b227", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "72dbbb563aa943b0", "fileio": "72dbbb563aa943b0", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"}
@@ -0,0 +1 @@
{"stdio": "285b6aa29a34754d", "viperlib": "3ed8c578036234a7", "stdarg": "71e0a3ffcb3ebfad", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "main": "c1416dfae155d6e2", "viperio": "c9f4be41ca1cc2b4", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7", "string": "ffaf70367668b227", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "72dbbb563aa943b0", "fileio": "72dbbb563aa943b0", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"}
@@ -0,0 +1 @@
{"stdio": "285b6aa29a34754d", "viperlib": "3ed8c578036234a7", "stdarg": "71e0a3ffcb3ebfad", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "main": "c1416dfae155d6e2", "viperio": "c9f4be41ca1cc2b4", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7", "string": "ffaf70367668b227", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "72dbbb563aa943b0", "fileio": "72dbbb563aa943b0", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"}
Binary file not shown.
@@ -1 +1 @@
{"testcheck": "14d33679f7fadf1f", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "string": "ba12ed409d78139e", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "stdint": "f5522571bcce7bcb"}
{"stdio": "285b6aa29a34754d", "viperlib": "3ed8c578036234a7", "stdarg": "71e0a3ffcb3ebfad", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperio": "c9f4be41ca1cc2b4", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7", "string": "ffaf70367668b227"}
@@ -0,0 +1 @@
{"stdio": "285b6aa29a34754d", "viperlib": "3ed8c578036234a7", "stdarg": "71e0a3ffcb3ebfad", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "main": "c1416dfae155d6e2", "viperio": "c9f4be41ca1cc2b4", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7", "string": "ffaf70367668b227", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "72dbbb563aa943b0", "fileio": "72dbbb563aa943b0", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"}
@@ -0,0 +1 @@
{"stdio": "285b6aa29a34754d", "viperlib": "3ed8c578036234a7", "stdarg": "71e0a3ffcb3ebfad", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "main": "c1416dfae155d6e2", "viperio": "c9f4be41ca1cc2b4", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7", "string": "ffaf70367668b227", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "72dbbb563aa943b0", "fileio": "72dbbb563aa943b0", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"}
@@ -0,0 +1 @@
{"stdio": "285b6aa29a34754d", "viperlib": "3ed8c578036234a7", "stdarg": "71e0a3ffcb3ebfad", "testcheck": "748d0424e8976fa0", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "main": "c1416dfae155d6e2", "viperio": "c9f4be41ca1cc2b4", "stdint": "f5522571bcce7bcb", "w32.win32base": "fc980acec33d69a7", "win32base": "fc980acec33d69a7", "string": "ffaf70367668b227", "w32.win32file": "f6b51804a0ba8ff0", "win32file": "f6b51804a0ba8ff0", "w32.fileio": "72dbbb563aa943b0", "fileio": "72dbbb563aa943b0", "w32.win32memory": "72e2d5ccb7cedcf1", "win32memory": "72e2d5ccb7cedcf1", "w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "w32.winsock2": "6446627d4f07a1b5", "winsock2": "6446627d4f07a1b5"}
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from w32.win32process.py
Auto-generated Python stub file from w32.win32process.vp
Module: w32.win32process
"""
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from w32.win32sync.py
Auto-generated Python stub file from w32.win32sync.vp
Module: w32.win32sync
"""
@@ -1 +0,0 @@
6f62fe05c5ea1ceb|7e529fe7a078cfef|bbdf3bbd4c3bc28c|f5522571bcce7bcb
@@ -0,0 +1,23 @@
"""
Auto-generated Python stub file from stdio.vp
Module: stdio
"""
import t, c
def printf(fmt: t.CConst | str, *args) -> int | t.State: pass
def fprintf(stream: bytes, fmt: t.CConst | str, *args) -> int | t.State: pass
def sprintf(buf: bytes, fmt: t.CConst | str, *args) -> int | t.State: pass
def snprintf(buf: bytes, size: t.CSizeT, fmt: t.CConst | str, *args) -> int | t.State: pass
def puts(s: t.CConst | str) -> int | t.State: pass
def fputs(s: t.CConst | str, stream: bytes) -> int | t.State: pass
def fgets(buf: bytes, size: int, stream: bytes) -> bytes | t.State: pass
def fflush(stream: bytes) -> int | t.State: pass
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from viperlib.py
Auto-generated Python stub file from viperlib.vp
Module: viperlib
"""
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from w32.winsock2.py
Auto-generated Python stub file from w32.winsock2.vp
Module: w32.winsock2
"""
@@ -1,28 +0,0 @@
"""
Auto-generated Python stub file from stdio.py
Module: stdio
"""
import t, c
def printf(fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
def fprintf(stream: bytes, fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
def sprintf(buf: bytes, fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
def snprintf(buf: bytes, size: t.CSizeT, fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
def puts(s: t.CConst | str) -> t.CInt | t.State: pass
def fputs(s: t.CConst | str, stream: bytes) -> t.CInt | t.State: pass
def fgets(buf: bytes, size: t.CInt, stream: bytes) -> bytes | t.State: pass
def fflush(stream: bytes) -> t.CInt | t.State: pass
stdin: t.CExtern | bytes
stdout: t.CExtern | bytes
stderr: t.CExtern | bytes
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from stdarg.py
Auto-generated Python stub file from stdarg.vp
Module: stdarg
"""
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from w32.fileio.py
Auto-generated Python stub file from w32.fileio.vp
Module: w32.fileio
"""
@@ -42,7 +42,7 @@ class File:
can_write: bool
is_append: bool
_share_mode: ULONG
def __init__(self: File, filename: str, mode: ULONG, share: ULONG) -> t.CInt: pass
def __init__(self: File, filename: str, mode: ULONG, share: ULONG = SHARE_READ) -> t.CInt: pass
def __enter__(self: File) -> 'File' | t.CPtr: pass
def __exit__(self: File) -> t.CInt: pass
def read(self: File, buf: bytes, count: ULONG) -> LONG: pass
@@ -62,7 +62,7 @@ class FileW:
can_write: bool
is_append: bool
_share_mode: ULONG
def __init__(self: FileW, filename: w32.win32base.LPCWSTR, mode: ULONG, share: ULONG) -> t.CInt: pass
def __init__(self: FileW, filename: w32.win32base.LPCWSTR, mode: ULONG, share: ULONG = SHARE_READ) -> t.CInt: pass
def __enter__(self: FileW) -> 'FileW' | t.CPtr: pass
def __exit__(self: FileW) -> t.CInt: pass
def read(self: FileW, buf: bytes, count: ULONG) -> LONG: pass
@@ -76,6 +76,6 @@ class FileW:
def readline(self: FileW, buf: bytes, max_count: ULONG) -> LONG: pass
def read_all(self: FileW, buf: bytes, max_count: ULONG) -> LONG: pass
def open(filename: str, mode: ULONG, share: ULONG) -> File | t.CPtr: pass
def open(filename: str, mode: ULONG, share: ULONG = SHARE_READ) -> File | t.CPtr: pass
def openw(filename: LPCWSTR, mode: ULONG, share: ULONG) -> FileW | t.CPtr: pass
def openw(filename: LPCWSTR, mode: ULONG, share: ULONG = SHARE_READ) -> FileW | t.CPtr: pass
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from w32.win32memory.py
Auto-generated Python stub file from w32.win32memory.vp
Module: w32.win32memory
"""
@@ -0,0 +1 @@
285b6aa29a34754d|bbdf3bbd4c3bc28c|f5522571bcce7bcb|fc980acec33d69a7
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from testcheck.py
Auto-generated Python stub file from testcheck.vp
Module: testcheck
"""
+1 -1
View File
@@ -1 +1 @@
{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\VariadicTest\\App\\main.py": {"sha1": "c1416dfae155d6e2", "mtime": 1782266230.8679473, "size": 6842}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ba12ed409d78139e", "mtime": 1784652963.6677132, "size": 10452}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "14d33679f7fadf1f", "mtime": 1784566611.838851, "size": 1979}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1784566611.8459883, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}}
{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\VariadicTest\\App\\main.vp": {"sha1": "c1416dfae155d6e2", "mtime": 1782266230.8679473, "size": 6842}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.vp": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.vp": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.vp": {"sha1": "285b6aa29a34754d", "mtime": 1785332415.1829746, "size": 561}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.vp": {"sha1": "ffaf70367668b227", "mtime": 1785424554.7179716, "size": 11048}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.vp": {"sha1": "748d0424e8976fa0", "mtime": 1785332415.20287, "size": 1919}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.vp": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.vp": {"sha1": "3ed8c578036234a7", "mtime": 1785439636.6696486, "size": 57646}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.vp": {"sha1": "fc980acec33d69a7", "mtime": 1785332415.2228394, "size": 2653}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.vp": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}}
+10 -10
View File
@@ -1,10 +1,10 @@
14d33679f7fadf1f:includes/testcheck.py
6f62fe05c5ea1ceb:includes/stdio.py
71e0a3ffcb3ebfad:includes/stdarg.py
7e529fe7a078cfef:includes/w32\win32base.py
ba12ed409d78139e:includes/string.py
bbdf3bbd4c3bc28c:includes/w32\win32console.py
c1416dfae155d6e2:main.py
c3b259b4059f8668:includes/viperlib.py
c9f4be41ca1cc2b4:includes/viperio.py
f5522571bcce7bcb:includes/stdint.py
285b6aa29a34754d:includes/stdio.vp
3ed8c578036234a7:includes/viperlib.vp
71e0a3ffcb3ebfad:includes/stdarg.vp
748d0424e8976fa0:includes/testcheck.vp
bbdf3bbd4c3bc28c:includes/w32\win32console.vp
c1416dfae155d6e2:main.vp
c9f4be41ca1cc2b4:includes/viperio.vp
f5522571bcce7bcb:includes/stdint.vp
fc980acec33d69a7:includes/w32\win32base.vp
ffaf70367668b227:includes/string.vp
@@ -1 +1 @@
7e529fe7a078cfef|f5522571bcce7bcb
f5522571bcce7bcb|fc980acec33d69a7
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from w32.win32console.py
Auto-generated Python stub file from w32.win32console.vp
Module: w32.win32console
"""
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from main.py
Auto-generated Python stub file from main.vp
Module: main
"""
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from viperio.py
Auto-generated Python stub file from viperio.vp
Module: viperio
"""
@@ -12,7 +12,7 @@ class Buf:
length: t.CSizeT
capacity: t.CSizeT
owned: bool
def __init__(self: Buf, data: t.CChar | t.CPtr, capacity: t.CSizeT, length: t.CSizeT, owned: bool) -> t.CInt: pass
def __init__(self: Buf, data: t.CChar | t.CPtr, capacity: t.CSizeT, length: t.CSizeT = 0, owned: bool = False) -> t.CInt: pass
def clear(self: Buf) -> t.CInt: pass
def write(self: Buf, src: t.CChar | t.CPtr, count: t.CSizeT) -> t.CSizeT: pass
def cstr(self: Buf) -> t.CChar | t.CPtr: pass
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from stdint.py
Auto-generated Python stub file from stdint.vp
Module: stdint
"""
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from w32.win32file.py
Auto-generated Python stub file from w32.win32file.vp
Module: w32.win32file
"""
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from w32.win32base.py
Auto-generated Python stub file from w32.win32base.vp
Module: w32.win32base
"""
@@ -12,7 +12,7 @@ from stdint import *
HANDLE: t.CTypedef = VOIDPTR
LPCSTR: t.CTypedef = t.CConst | t.CChar | t.CPtr
LPCWSTR: t.CTypedef = t.CConst | t.CUnsignedShort | t.CPtr
INVALID_HANDLE_VALUE: t.CDefine = t.CVoid(-1)
INVALID_HANDLE_VALUE: t.CDefine = -1
NULL: t.CDefine = 0
TRUE: t.CDefine = 1
FALSE: t.CDefine = 0
@@ -1,5 +1,5 @@
"""
Auto-generated Python stub file from string.py
Auto-generated Python stub file from string.vp
Module: string
"""
@@ -29,7 +29,7 @@ def strrchr(s: str, cr: t.CInt) -> str: pass
def strstr(s: str, needle: str) -> str: pass
def strspn(s: str, skip: str) -> int: pass
def strspn(s: str, skip: str = ' ') -> int: pass
def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass
@@ -1 +0,0 @@
{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "sys": "0c67644125bea0fd", "lib.core.Handles.HandlesAnnAssign": "0cc3dc5a1bb0c805", "HandlesAnnAssign": "0cc3dc5a1bb0c805", "hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "llvmlite.__init__": "1d74d1d3a174c684", "__init__": "f3444ec56937284f", "llvmlite": "1d74d1d3a174c684", "json.__writer": "20cd49775c100a38", "__writer": "20cd49775c100a38", "ast.base": "22bc0df83b3f0e62", "base": "22bc0df83b3f0e62", "json.__parser": "240a9a4157959a9f", "__parser": "240a9a4157959a9f", "stdio": "285b6aa29a34754d", "posix": "28de517e3820658a", "hashtable": "2b77d783c41d21d1", "llvmlite.__types": "2d8debefda779c40", "__types": "2d8debefda779c40", "lib.core.BuildPipeline": "343b406cabc82fe9", "BuildPipeline": "343b406cabc82fe9", "stdlib": "3aa6057398be5673", "viperlib": "3ed8c578036234a7", "ast.astaux": "4337fb260448bbe2", "astaux": "4337fb260448bbe2", "lib.core.Handles.HandlesFor": "456fb516ba3c5002", "HandlesFor": "456fb516ba3c5002", "lib.Projectrans.Utils": "4650533467115342", "Utils": "4650533467115342", "lib.core.Handles.HandlesMain": "4a7b57e6bd18f65e", "HandlesMain": "4a7b57e6bd18f65e", "lib.core.Handles.HandlesReturn": "4c644ade1f0d6d02", "HandlesReturn": "4c644ade1f0d6d02", "ast.match": "4dd6b3f1427d1cc5", "match": "4dd6b3f1427d1cc5", "lib.core.IncludesScanner": "55be14b41dd7ca15", "IncludesScanner": "55be14b41dd7ca15", "llvmlite.__builder": "5a1d8c48f1243746", "__builder": "5a1d8c48f1243746", "lib.core.Handles.HandlesAssign": "611a2ade7450d2ea", "HandlesAssign": "611a2ade7450d2ea", "lib.core.Handles.HandlesTranslator": "62805d8ad3e9b5ba", "HandlesTranslator": "62805d8ad3e9b5ba", "lib.core.Handles.HandlesBase": "63a3d17e96a083ac", "HandlesBase": "63a3d17e96a083ac", "ast.stmts": "657e182b27c2a022", "stmts": "657e182b27c2a022", "llvmlite.__module": "692919c5a194ac8d", "__module": "692919c5a194ac8d", "llvmlite.__verify": "6b3bc463fd044545", "__verify": "6b3bc463fd044545", "json.__init__": "6ddf430432a0e373", "json": "6ddf430432a0e373", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "stdarg": "71e0a3ffcb3ebfad", "w32.fileio": "72dbbb563aa943b0", "fileio": "72dbbb563aa943b0", "_list": "7cadfe07e983fd90", "lib.core.Handles.HandlesClassDef": "7cb3f5b12941ce89", "HandlesClassDef": "7cb3f5b12941ce89", "lib.core.Phase1": "7feaa478b74c4e3e", "Phase1": "7feaa478b74c4e3e", "llvmlite.__function": "874bac141c97bae9", "__function": "874bac141c97bae9", "lib.core.Handles.HandlesWhile": "8dc65d4c71e2936a", "HandlesWhile": "8dc65d4c71e2936a", "lib.core.Phase2": "8de6943bee5d0f32", "Phase2": "8de6943bee5d0f32", "hashlib.__init__": "96837bcc64032444", "hashlib": "96837bcc64032444", "lib.core.Handles.HandlesExpr": "9b1f7f05ff99d863", "HandlesExpr": "9b1f7f05ff99d863", "subprocess": "a335eb99f2e34479", "linkedlist": "a5e9a83e9db303ad", "lib.core.Handles.HandlesType": "a6e43e1ab6aa79b7", "HandlesType": "a6e43e1ab6aa79b7", "atom": "aa246c6e6aa30484", "lib.core.Handles.HandlesNonlocal": "af9484a65085bf4b", "HandlesNonlocal": "af9484a65085bf4b", "argparse": "b370d93b74bf55cc", "ast.exprs": "b543bc1dfb592119", "exprs": "b543bc1dfb592119", "ast.tokens": "b547ac4f380bddb6", "tokens": "b547ac4f380bddb6", "platmacro": "b57252077e6b596b", "lib.core.Handles.HandlesFunctions": "b8a6e05318020e54", "HandlesFunctions": "b8a6e05318020e54", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "lib.core.VLogger": "bdf5730851fb95f2", "VLogger": "bdf5730851fb95f2", "lib.core.Handles.HandlesExprOps": "be8c2d7b882881c8", "HandlesExprOps": "be8c2d7b882881c8", "lib.Projectrans.Config": "c0042adc0b7ec5df", "Config": "c0042adc0b7ec5df", "lib.__init__": "c2a4277744568003", "lib": "c2a4277744568003", "lib.core.Handles.HandlesImports": "c34e22cc668c6a6e", "HandlesImports": "c34e22cc668c6a6e", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "memhub": "ca40915f11b8b6ad", "lib.core.Handles.HandlesVar": "cb1aa3a78af6f362", "HandlesVar": "cb1aa3a78af6f362", "lib.StubGen.Converter": "cba5876ccb277f42", "Converter": "cba5876ccb277f42", "lib.core.Handles.HandlesExprCall": "cf3556225b0a3c8c", "HandlesExprCall": "cf3556225b0a3c8c", "lib.core.Handles.HandlesAugAssign": "d9dd5fce03a20af1", "HandlesAugAssign": "d9dd5fce03a20af1", "ast.lexer": "e217def267d3d4a8", "lexer": "e217def267d3d4a8", "lib.core.StubMerger": "ead693cb29a9c343", "StubMerger": "ead693cb29a9c343", "lib.core.Handles.HandlesEnum": "f05b14a2ad5767a7", "HandlesEnum": "f05b14a2ad5767a7", "lib.core.Handles.HandlesStruct": "f09b2f4a0f9d053e", "HandlesStruct": "f09b2f4a0f9d053e", "main": "f30a3b2d5f6bf092", "ast.__init__": "f3444ec56937284f", "ast": "f3444ec56937284f", "lib.core.Handles.HandlesIf": "f4cdbca2f8802c12", "HandlesIf": "f4cdbca2f8802c12", "stdint": "f5522571bcce7bcb", "w32.win32Line truncated
@@ -1 +0,0 @@
{"w32.win32process": "067c78e9f121dce3", "win32process": "067c78e9f121dce3", "w32.win32sync": "06f53cc594b4ac6c", "win32sync": "06f53cc594b4ac6c", "sys": "0c67644125bea0fd", "lib.core.Handles.HandlesAnnAssign": "0cc3dc5a1bb0c805", "HandlesAnnAssign": "0cc3dc5a1bb0c805", "hashlib.__sha1": "0df65b8ed15664b0", "__sha1": "0df65b8ed15664b0", "hashlib.__md5": "19f8024d10c828e8", "__md5": "19f8024d10c828e8", "llvmlite.__init__": "1d74d1d3a174c684", "__init__": "f3444ec56937284f", "llvmlite": "1d74d1d3a174c684", "json.__writer": "20cd49775c100a38", "__writer": "20cd49775c100a38", "ast.base": "22bc0df83b3f0e62", "base": "22bc0df83b3f0e62", "json.__parser": "240a9a4157959a9f", "__parser": "240a9a4157959a9f", "stdio": "285b6aa29a34754d", "posix": "28de517e3820658a", "hashtable": "2b77d783c41d21d1", "llvmlite.__types": "2d8debefda779c40", "__types": "2d8debefda779c40", "lib.core.BuildPipeline": "343b406cabc82fe9", "BuildPipeline": "343b406cabc82fe9", "stdlib": "3aa6057398be5673", "viperlib": "3ed8c578036234a7", "ast.astaux": "4337fb260448bbe2", "astaux": "4337fb260448bbe2", "lib.core.Handles.HandlesFor": "456fb516ba3c5002", "HandlesFor": "456fb516ba3c5002", "lib.Projectrans.Utils": "4650533467115342", "Utils": "4650533467115342", "lib.core.Handles.HandlesMain": "4a7b57e6bd18f65e", "HandlesMain": "4a7b57e6bd18f65e", "lib.core.Handles.HandlesReturn": "4c644ade1f0d6d02", "HandlesReturn": "4c644ade1f0d6d02", "ast.match": "4dd6b3f1427d1cc5", "match": "4dd6b3f1427d1cc5", "lib.core.IncludesScanner": "55be14b41dd7ca15", "IncludesScanner": "55be14b41dd7ca15", "llvmlite.__builder": "5a1d8c48f1243746", "__builder": "5a1d8c48f1243746", "lib.core.Handles.HandlesAssign": "611a2ade7450d2ea", "HandlesAssign": "611a2ade7450d2ea", "lib.core.Handles.HandlesTranslator": "62805d8ad3e9b5ba", "HandlesTranslator": "62805d8ad3e9b5ba", "lib.core.Handles.HandlesBase": "63a3d17e96a083ac", "HandlesBase": "63a3d17e96a083ac", "ast.stmts": "657e182b27c2a022", "stmts": "657e182b27c2a022", "llvmlite.__module": "692919c5a194ac8d", "__module": "692919c5a194ac8d", "llvmlite.__verify": "6b3bc463fd044545", "__verify": "6b3bc463fd044545", "json.__init__": "6ddf430432a0e373", "json": "6ddf430432a0e373", "hashlib.__sha512": "6ff26590374ae6fc", "__sha512": "6ff26590374ae6fc", "stdarg": "71e0a3ffcb3ebfad", "w32.fileio": "72dbbb563aa943b0", "fileio": "72dbbb563aa943b0", "_list": "7cadfe07e983fd90", "lib.core.Handles.HandlesClassDef": "7cb3f5b12941ce89", "HandlesClassDef": "7cb3f5b12941ce89", "lib.core.Phase1": "7feaa478b74c4e3e", "Phase1": "7feaa478b74c4e3e", "lib.core.Handles.HandlesBody": "81eb28ba912467a6", "HandlesBody": "81eb28ba912467a6", "llvmlite.__function": "874bac141c97bae9", "__function": "874bac141c97bae9", "lib.core.Handles.HandlesWhile": "8dc65d4c71e2936a", "HandlesWhile": "8dc65d4c71e2936a", "lib.core.Phase2": "8de6943bee5d0f32", "Phase2": "8de6943bee5d0f32", "hashlib.__init__": "96837bcc64032444", "hashlib": "96837bcc64032444", "lib.core.Handles.HandlesExpr": "9b1f7f05ff99d863", "HandlesExpr": "9b1f7f05ff99d863", "subprocess": "a335eb99f2e34479", "linkedlist": "a5e9a83e9db303ad", "lib.core.Handles.HandlesType": "a6e43e1ab6aa79b7", "HandlesType": "a6e43e1ab6aa79b7", "atom": "aa246c6e6aa30484", "argparse": "b370d93b74bf55cc", "ast.exprs": "b543bc1dfb592119", "exprs": "b543bc1dfb592119", "ast.tokens": "b547ac4f380bddb6", "tokens": "b547ac4f380bddb6", "platmacro": "b57252077e6b596b", "lib.core.Handles.HandlesFunctions": "b8a6e05318020e54", "HandlesFunctions": "b8a6e05318020e54", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "lib.core.VLogger": "bdf5730851fb95f2", "VLogger": "bdf5730851fb95f2", "lib.core.Handles.HandlesExprOps": "be8c2d7b882881c8", "HandlesExprOps": "be8c2d7b882881c8", "lib.Projectrans.Config": "c0042adc0b7ec5df", "Config": "c0042adc0b7ec5df", "lib.__init__": "c2a4277744568003", "lib": "c2a4277744568003", "lib.core.Handles.HandlesImports": "c34e22cc668c6a6e", "HandlesImports": "c34e22cc668c6a6e", "hashlib.__sha256": "c9d54a4158f7f5a8", "__sha256": "c9d54a4158f7f5a8", "viperio": "c9f4be41ca1cc2b4", "memhub": "ca40915f11b8b6ad", "lib.core.Handles.HandlesVar": "cb1aa3a78af6f362", "HandlesVar": "cb1aa3a78af6f362", "lib.StubGen.Converter": "cba5876ccb277f42", "Converter": "cba5876ccb277f42", "lib.core.Handles.HandlesExprCall": "cf3556225b0a3c8c", "HandlesExprCall": "cf3556225b0a3c8c", "lib.core.Handles.HandlesAugAssign": "d9dd5fce03a20af1", "HandlesAugAssign": "d9dd5fce03a20af1", "ast.lexer": "e217def267d3d4a8", "lexer": "e217def267d3d4a8", "lib.core.StubMerger": "ead693cb29a9c343", "StubMerger": "ead693cb29a9c343", "lib.core.Handles.HandlesEnum": "f05b14a2ad5767a7", "HandlesEnum": "f05b14a2ad5767a7", "lib.core.Handles.HandlesStruct": "f09b2f4a0f9d053e", "HandlesStruct": "f09b2f4a0f9d053e", "main": "f30a3b2d5f6bf092", "ast.__init__": "f3444ec56937284f", "ast": "f3444ec56937284f", "lib.core.Handles.HandlesIf": "f4cdbca2f8802c12", "HandlesIf": "f4cdbca2f8802c12", "stdint": "f5522571bcce7bcb", "w32.win32file": "Line truncated
-1
View File
@@ -1 +0,0 @@
{"translate_stmt": "翻译单条语句,返回新增的变量数", "translate_global": "翻译 global 语句:记录 global 变量名", "translate_nonlocal": "翻译 nonlocal 语句:记录 nonlocal 变量名", "translate_expr_stmt": "翻译表达式语句(printf 调用等)", "pre_scan_allocas": "预扫描语句中的 AnnAssign,提前创建 alloca\n\n 返回新增的变量数\n ", "translate_break": "翻译 break 语句:跳转到循环 end 块", "translate_continue": "翻译 continue 语句:跳转到循环 cond/incr 块", "get_stmt_kind_name": "获取语句类型名"}
+1 -1
View File
@@ -1 +1 @@
{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\Projectrans\\Config.vp": {"sha1": "c0042adc0b7ec5df", "mtime": 1785332415.2264168, "size": 14060}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\Projectrans\\Utils.vp": {"sha1": "4650533467115342", "mtime": 1785332415.2054548, "size": 4900}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\StubGen\\Converter.vp": {"sha1": "cba5876ccb277f42", "mtime": 1785424554.7179716, "size": 35262}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\__init__.vp": {"sha1": "c2a4277744568003", "mtime": 1785424554.7031634, "size": 820}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\BuildPipeline.vp": {"sha1": "343b406cabc82fe9", "mtime": 1785440580.5088792, "size": 23661}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesAnnAssign.vp": {"sha1": "0cc3dc5a1bb0c805", "mtime": 1785428023.816983, "size": 24643}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesAssign.vp": {"sha1": "611a2ade7450d2ea", "mtime": 1785427819.8937466, "size": 25063}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesAugAssign.vp": {"sha1": "d9dd5fce03a20af1", "mtime": 1785424554.716454, "size": 14303}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesBase.vp": {"sha1": "63a3d17e96a083ac", "mtime": 1785332415.2080498, "size": 8740}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesBody.vp": {"sha1": "81eb28ba912467a6", "mtime": 1784566611.8626723, "size": 8538}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesClassDef.vp": {"sha1": "7cb3f5b12941ce89", "mtime": 1785441874.507578, "size": 145069}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesEnum.vp": {"sha1": "f05b14a2ad5767a7", "mtime": 1784741624.7278736, "size": 8520}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesExpr.vp": {"sha1": "9b1f7f05ff99d863", "mtime": 1785428023.8272786, "size": 153922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesExprCall.vp": {"sha1": "cf3556225b0a3c8c", "mtime": 1785441909.8620112, "size": 265440}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesExprOps.vp": {"sha1": "be8c2d7b882881c8", "mtime": 1784791452.111348, "size": 12796}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesFor.vp": {"sha1": "456fb516ba3c5002", "mtime": 1785332415.1896677, "size": 17319}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesFunctions.vp": {"sha1": "b8a6e05318020e54", "mtime": 1785424554.702158, "size": 45475}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesIf.vp": {"sha1": "f4cdbca2f8802c12", "mtime": 1785390159.3673935, "size": 5626}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesImports.vp": {"sha1": "c34e22cc668c6a6e", "mtime": 1785424554.7057025, "size": 25292}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesMain.vp": {"sha1": "4a7b57e6bd18f65e", "mtime": 1785332415.1935978, "size": 21362}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesNonlocal.vp": {"sha1": "af9484a65085bf4b", "mtime": 1784540868.0555332, "size": 5336}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesReturn.vp": {"sha1": "4c644ade1f0d6d02", "mtime": 1785394149.332443, "size": 6334}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesStruct.vp": {"sha1": "f09b2f4a0f9d053e", "mtime": 1785426809.706652, "size": 47907}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesTranslator.vp": {"sha1": "62805d8ad3e9b5ba", "mtime": 1785332415.2370398, "size": 18196}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesType.vp": {"sha1": "a6e43e1ab6aa79b7", "mtime": 1785441893.1464703, "size": 71572}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesVar.vp": {"sha1": "cb1aa3a78af6f362", "mtime": 1785332415.2565334, "size": 15697}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesWhile.vp": {"sha1": "8dc65d4c71e2936a", "mtime": 1785390170.5239043, "size": 5202}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\IncludesScanner.vp": {"sha1": "55be14b41dd7ca15", "mtime": 1785424554.7031634, "size": 13067}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Phase1.vp": {"sha1": "7feaa478b74c4e3e", "mtime": 1785424554.7122867, "size": 51107}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Phase2.vp": {"sha1": "8de6943bee5d0f32", "mtime": 1785424554.713286Line truncated
{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\Projectrans\\Config.vp": {"sha1": "c0042adc0b7ec5df", "mtime": 1785332415.2264168, "size": 14060}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\Projectrans\\Utils.vp": {"sha1": "4650533467115342", "mtime": 1785332415.2054548, "size": 4900}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\StubGen\\Converter.vp": {"sha1": "edfb76eb5b11cb51", "mtime": 1785470008.8908188, "size": 36399}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\StubGen\\VpiReader.vp": {"sha1": "60b1f1f83634820e", "mtime": 1785470742.1546993, "size": 12673}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\__init__.vp": {"sha1": "c2a4277744568003", "mtime": 1785424554.7031634, "size": 820}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\BuildPipeline.vp": {"sha1": "0029b86ca4ba3c8a", "mtime": 1785469972.0876107, "size": 25400}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesAnnAssign.vp": {"sha1": "b7705a803012e701", "mtime": 1785478290.7112954, "size": 25035}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesAssign.vp": {"sha1": "0fd87ff8da897c9b", "mtime": 1785478447.198817, "size": 25107}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesAugAssign.vp": {"sha1": "0d60272ffec7421e", "mtime": 1785478333.5054357, "size": 14418}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesBase.vp": {"sha1": "63a3d17e96a083ac", "mtime": 1785332415.2080498, "size": 8740}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesBody.vp": {"sha1": "8a88001814aa6e7b", "mtime": 1785485408.946777, "size": 10469}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesClassDef.vp": {"sha1": "07093bc887a35256", "mtime": 1785478535.6808052, "size": 145619}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesEnum.vp": {"sha1": "f05b14a2ad5767a7", "mtime": 1784741624.7278736, "size": 8520}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesExpr.vp": {"sha1": "ebe9603dbffb6a35", "mtime": 1785478439.6070976, "size": 155333}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesExprCall.vp": {"sha1": "b70057095779b5be", "mtime": 1785482646.5378678, "size": 281321}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesExprOps.vp": {"sha1": "ede39cea216a347e", "mtime": 1785478524.0725746, "size": 13507}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesFor.vp": {"sha1": "456fb516ba3c5002", "mtime": 1785332415.1896677, "size": 17319}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesFunctions.vp": {"sha1": "f33eba0679c883b5", "mtime": 1785482062.1941507, "size": 48438}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesIf.vp": {"sha1": "f4cdbca2f8802c12", "mtime": 1785390159.3673935, "size": 5626}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesImports.vp": {"sha1": "c34e22cc668c6a6e", "mtime": 1785424554.7057025, "size": 25292}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesMain.vp": {"sha1": "4a7b57e6bd18f65e", "mtime": 1785332415.1935978, "size": 21362}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesNonlocal.vp": {"sha1": "3e7835a9deb60427", "mtime": 1785485362.3779018, "size": 7459}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesReturn.vp": {"sha1": "9224f6a9c894a6cf", "mtime": 1785478537.512802, "size": 6346}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesStruct.vp": {"sha1": "f09b2f4a0f9d053e", "mtime": 1785426809.706652, "size": 47907}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesTranslator.vp": {"sha1": "decd2fdd82387662", "mtime": 1785481813.1345608, "size": 23666}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesType.vp": {"sha1": "735fcd4c340edd2d", "mtime": 1785470195.0236213, "size": 79666}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesVar.vp": {"sha1": "ea374464a0b93230", "mtime": 1785474869.3558953, "size": 16575}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Handles\\HandlesWhile.vp": {"sha1": "8dc65d4c71e2936a", "mtime": 1785390170.5239043, "size": 5202}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\IncludesScanner.vp": {"sha1": "55be14b41dd7ca15", "mtime": 1785424554.7031634, "size": 13067}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\App\\lib\\core\\Phase1.vp": {"sha1": "8a526c65749808c5", "mtime": 1785470Line truncated
+23 -22
View File
@@ -1,30 +1,31 @@
0029b86ca4ba3c8a:lib/core/BuildPipeline.vp
067c78e9f121dce3:includes/w32\win32process.vp
06f53cc594b4ac6c:includes/w32\win32sync.vp
07093bc887a35256:lib/core/Handles/HandlesClassDef.vp
0c67644125bea0fd:includes/sys.vp
0cc3dc5a1bb0c805:lib/core/Handles/HandlesAnnAssign.vp
0d60272ffec7421e:lib/core/Handles/HandlesAugAssign.vp
0df65b8ed15664b0:includes/hashlib\__sha1.vp
0f9622f83dd1f680:lib/core/StubMerger.vp
0fd87ff8da897c9b:lib/core/Handles/HandlesAssign.vp
19f8024d10c828e8:includes/hashlib\__md5.vp
1d74d1d3a174c684:includes/llvmlite\__init__.vp
20cd49775c100a38:includes/json\__writer.vp
22bc0df83b3f0e62:includes/ast\base.vp
240a9a4157959a9f:includes/json\__parser.vp
285b6aa29a34754d:includes/stdio.vp
28de517e3820658a:includes/posix.vp
295b7ed2c244f309:includes/llvmlite\__types.vp
2b77d783c41d21d1:includes/hashtable.vp
2d8debefda779c40:includes/llvmlite\__types.vp
343b406cabc82fe9:lib/core/BuildPipeline.vp
33d64eeb99369a85:includes/llvmlite\__init__.vp
3aa6057398be5673:includes/stdlib.vp
3e7835a9deb60427:lib/core/Handles/HandlesNonlocal.vp
3ed8c578036234a7:includes/viperlib.vp
4337fb260448bbe2:includes/ast\astaux.vp
456fb516ba3c5002:lib/core/Handles/HandlesFor.vp
4650533467115342:lib/Projectrans/Utils.vp
4a7b57e6bd18f65e:lib/core/Handles/HandlesMain.vp
4c644ade1f0d6d02:lib/core/Handles/HandlesReturn.vp
4dd6b3f1427d1cc5:includes/ast\match.vp
55be14b41dd7ca15:lib/core/IncludesScanner.vp
5a1d8c48f1243746:includes/llvmlite\__builder.vp
611a2ade7450d2ea:lib/core/Handles/HandlesAssign.vp
62805d8ad3e9b5ba:lib/core/Handles/HandlesTranslator.vp
60b1f1f83634820e:lib/StubGen/VpiReader.vp
63a3d17e96a083ac:lib/core/Handles/HandlesBase.vp
657e182b27c2a022:includes/ast\stmts.vp
692919c5a194ac8d:includes/llvmlite\__module.vp
@@ -33,43 +34,43 @@
6ff26590374ae6fc:includes/hashlib\__sha512.vp
71e0a3ffcb3ebfad:includes/stdarg.vp
72dbbb563aa943b0:includes/w32\fileio.vp
735fcd4c340edd2d:lib/core/Handles/HandlesType.vp
7cadfe07e983fd90:includes/_list.vp
7cb3f5b12941ce89:lib/core/Handles/HandlesClassDef.vp
7feaa478b74c4e3e:lib/core/Phase1.vp
81eb28ba912467a6:lib/core/Handles/HandlesBody.vp
874bac141c97bae9:includes/llvmlite\__function.vp
8a526c65749808c5:lib/core/Phase1.vp
8a88001814aa6e7b:lib/core/Handles/HandlesBody.vp
8dc65d4c71e2936a:lib/core/Handles/HandlesWhile.vp
8de6943bee5d0f32:lib/core/Phase2.vp
9224f6a9c894a6cf:lib/core/Handles/HandlesReturn.vp
96837bcc64032444:includes/hashlib\__init__.vp
9b1f7f05ff99d863:lib/core/Handles/HandlesExpr.vp
a335eb99f2e34479:includes/subprocess.vp
a5e9a83e9db303ad:includes/linkedlist.vp
a6e43e1ab6aa79b7:lib/core/Handles/HandlesType.vp
aa246c6e6aa30484:includes/atom.vp
af9484a65085bf4b:lib/core/Handles/HandlesNonlocal.vp
b370d93b74bf55cc:includes/argparse.vp
b543bc1dfb592119:includes/ast\exprs.vp
b547ac4f380bddb6:includes/ast\tokens.vp
b57252077e6b596b:includes/platmacro.vp
b8a6e05318020e54:lib/core/Handles/HandlesFunctions.vp
b70057095779b5be:lib/core/Handles/HandlesExprCall.vp
b7705a803012e701:lib/core/Handles/HandlesAnnAssign.vp
bbdf3bbd4c3bc28c:includes/w32\win32console.vp
bdf5730851fb95f2:lib/core/VLogger.vp
be8c2d7b882881c8:lib/core/Handles/HandlesExprOps.vp
c0042adc0b7ec5df:lib/Projectrans/Config.vp
c2a4277744568003:lib/__init__.vp
c34e22cc668c6a6e:lib/core/Handles/HandlesImports.vp
c9d54a4158f7f5a8:includes/hashlib\__sha256.vp
c9f4be41ca1cc2b4:includes/viperio.vp
ca40915f11b8b6ad:includes/memhub.vp
cb1aa3a78af6f362:lib/core/Handles/HandlesVar.vp
cba5876ccb277f42:lib/StubGen/Converter.vp
cf3556225b0a3c8c:lib/core/Handles/HandlesExprCall.vp
d9dd5fce03a20af1:lib/core/Handles/HandlesAugAssign.vp
decd2fdd82387662:lib/core/Handles/HandlesTranslator.vp
e217def267d3d4a8:includes/ast\lexer.vp
ead693cb29a9c343:lib/core/StubMerger.vp
e4eb57e8026bccc7:includes/llvmlite\__builder.vp
ea374464a0b93230:lib/core/Handles/HandlesVar.vp
ebe9603dbffb6a35:lib/core/Handles/HandlesExpr.vp
ede39cea216a347e:lib/core/Handles/HandlesExprOps.vp
edfb76eb5b11cb51:lib/StubGen/Converter.vp
f05b14a2ad5767a7:lib/core/Handles/HandlesEnum.vp
f09b2f4a0f9d053e:lib/core/Handles/HandlesStruct.vp
f30a3b2d5f6bf092:main.vp
f33eba0679c883b5:lib/core/Handles/HandlesFunctions.vp
f34071b7cf6c8158:lib/core/Phase2.vp
f3444ec56937284f:includes/ast\__init__.vp
f4cdbca2f8802c12:lib/core/Handles/HandlesIf.vp
f5522571bcce7bcb:includes/stdint.vp
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
{"get_env_ptr_var": "获取或创建 _env_ptr 变量(存储闭包 env 指针)", "load_nonlocal_var": "从闭包 env 加载 nonlocal 变量值(env 直接存储 i32 值)", "get_nonlocal_var_ptr": "获取 nonlocal 变量在 env 中的地址(i32*),用于 store 操作"}
+23
View File
@@ -1219,6 +1219,29 @@ def build_cmpxchg(builder: IRBuilder | t.CPtr, ptr: Value | t.CPtr,
return SSAValue(pool, new_val.Ty, name)
# ============================================================
# va_arg 指令: 从 va_list 读取下一个变长参数
# ============================================================
def build_va_arg(builder: IRBuilder | t.CPtr,
va_list_ptr: Value | t.CPtr,
arg_ty: LLVMType | t.CPtr) -> Value | t.CPtr:
"""%N = va_arg <va_list_ty> <va_list_ptr>, <arg_ty>"""
if builder is None or va_list_ptr is None or arg_ty is None:
return None
pool: memhub.MemBuddy | t.CPtr = builder.Pool
name: t.CChar | t.CPtr = _alloc_ssa_name(builder)
va_list_ty_s: t.CChar | t.CPtr = _type_str(builder, va_list_ptr.Ty)
arg_ty_s: t.CChar | t.CPtr = _type_str(builder, arg_ty)
line: t.CChar | t.CPtr = pool.alloc(256)
if line is None: return None
if va_list_ptr.Name is None:
return None
viperlib.snprintf(line, 256, "%s = va_arg %s %s, %s",
name, va_list_ty_s, va_list_ptr.Name, arg_ty_s)
_emit(builder, line)
return SSAValue(pool, arg_ty, name)
# ============================================================
# 内联汇编 (Phase 3)
# ============================================================
+1 -1
View File
@@ -51,7 +51,7 @@ from .__builder import (
build_fpext, build_fptrunc, build_fp2si, build_si2fp, build_fp2ui, build_ui2fp,
build_gep, build_gep_array, build_gep_struct,
build_phi, build_switch, build_select, build_unreachable,
build_atomicrmw, build_cmpxchg, build_inline_asm,
build_atomicrmw, build_cmpxchg, build_inline_asm, build_va_arg,
PhiIncoming, new_phi_incoming, SwitchCase, new_switch_case,
ICMP_EQ, ICMP_NE, ICMP_SGT, ICMP_SGE, ICMP_SLT, ICMP_SLE,
ICMP_UGT, ICMP_UGE, ICMP_ULT, ICMP_ULE,
+41 -3
View File
@@ -120,9 +120,27 @@ def Int64(pool: memhub.MemBuddy | t.CPtr) -> LLVMType | t.CPtr:
def Ptr(pool: memhub.MemBuddy | t.CPtr, pointee: LLVMType | t.CPtr) -> LLVMType | t.CPtr:
"""创建指针类型 Ptr(pointee)
LLVM IR 中 **不允许 void* 指针**("pointers to void are invalid"),
因此:
- 若 pointee == None → 回退 Ptr(Int8)
- 若 pointee 是 LLVMType.Void → 回退 Ptr(Int8)(对应 C 的 void* 语法在 TPV 中写 Ptr(t.CVoid))
其他类型正常构造 Ptr(pointee)。
"""
# ============== 前置校验: 拦截 Void / None pointee(void* 非法)==============
safe_pointee: LLVMType | t.CPtr = pointee
if safe_pointee is None:
safe_pointee = Int8(pool)
else:
match safe_pointee:
case LLVMType.Void():
safe_pointee = Int8(pool)
case _:
pass
ptr: LLVMType | t.CPtr = _new_type(pool)
if ptr is None: return None
c.DerefAs(ptr, LLVMType.Ptr(pointee))
c.DerefAs(ptr, LLVMType.Ptr(safe_pointee))
return ptr
@@ -372,14 +390,34 @@ def TypePrint(buf: t.CChar | t.CPtr, size: t.CSizeT,
case LLVMType.Int(bits):
viperlib.snprintf(buf, size, "i%d", bits)
case LLVMType.Ptr(pointee):
# 快速路径: Ptr(Struct(name)) → %"name"*
# 使用 snprintf 一次性格式化,避免递归 TypePrint + _strappend 导致的截断
# ================================================================
# LLVM IR 不允许 "void*",必须是 "i8*"。
# 兜底处理:
# pointee == None / Void() / Label() / Metadata() → 统一打印 i8*
# ================================================================
# 先判断是否 Struct(name) 的快速路径(需先判断 pointee 非None)
if pointee is not None:
match pointee:
case LLVMType.Struct(sfields, sfcount, sname):
if sname is not None:
viperlib.snprintf(buf, size, "%%\"%s\"*", sname)
return
case LLVMType.Void():
# Ptr(Void) → i8*(LLVM IR void* 非法)
string.strcpy(buf, "i8*")
return
case LLVMType.Label():
string.strcpy(buf, "i8*")
return
case LLVMType.Metadata():
string.strcpy(buf, "i8*")
return
case _:
pass
# pointee == None 时也兜底 Ptr(Int8) 打印 i8*
if pointee is None:
string.strcpy(buf, "i8*")
return
# 通用路径: 递归打印 pointee 后追加 '*'
TypePrint(buf, size, pointee, pool)
pos: t.CSizeT = string.strlen(buf)
+101
View File
@@ -33,5 +33,106 @@ def _bootstrap() -> None:
if _IncludesDir not in sys.path:
sys.path.append(_IncludesDir)
# ============================================================
# LLVM IR 兼容性补丁:llvmlite 不允许 void* 指针类型
#
# LLVM IR 规范中不存在 void*,C 的 void* 在 IR 层对应的是 i8*。
# 但编译链(REnum / Python 推理)可能错误地构造 ir.PointerType(ir.VoidType()),
# 这会导致 llc 报 "pointers to void are invalid - use i8* instead" 直接失败。
#
# 这里在入口对 ir.PointerType.__new__ 和 __init__ 做 monkey patch:
# 所有传入 VoidType 的 pointee(无论多少级 Ptr 嵌套)都自动替换为 i8。
# 这样 _nonlocal_types / 闭包环境 / 任何代码路径产生的 Ptr(Void) 都会被静默修正。
# ============================================================
try:
import llvmlite.ir as _llvmlite_ir
except Exception: # noqa: BLE001
_llvmlite_ir = None # type: ignore[assignment]
if _llvmlite_ir is not None:
_I8 = _llvmlite_ir.IntType(8)
def _IsBadPointee(pointee) -> bool:
"""只在明确传入了 VoidType 或 Ptr(...Void...) 这类坏 pointee 时返回 True;
None 由 llvmlite 内部 super 调用使用,不能替换!"""
if pointee is None:
return False
cur = pointee
while isinstance(cur, _llvmlite_ir.PointerType):
if isinstance(getattr(cur, 'pointee', None), _llvmlite_ir.VoidType):
return True
cur = getattr(cur, 'pointee', None)
if isinstance(pointee, _llvmlite_ir.VoidType):
return True
return False
# llvmlite 内部:PointerType(pointee=Int8) 实际返回的是内部类 _TypedPointerType 实例,
# 它的 __init__ 会 super 调 PointerType.__init__(pointee=None, addrspace),
# 因此我们只在明确看到 VoidType 传入(pointee is not None)时才做替换。
def _PatchPointerInitAndNew(cls) -> None:
try:
orig_new = cls.__new__
orig_init = cls.__init__
except Exception: # noqa: BLE001
return
if getattr(orig_init, '__void_patch_applied__', False):
return
def _patched_new(klass, pointee=None, addrspace=None, *args, **kwargs):
if _IsBadPointee(pointee):
return orig_new(klass, _I8, addrspace, *args, **kwargs)
return orig_new(klass, pointee, addrspace, *args, **kwargs)
def _patched_init(self_self, pointee=None, addrspace=None, *args, **kwargs):
if _IsBadPointee(pointee):
return orig_init(self_self, _I8, addrspace, *args, **kwargs)
return orig_init(self_self, pointee, addrspace, *args, **kwargs)
_patched_init.__void_patch_applied__ = True # type: ignore[attr-defined]
try:
cls.__new__ = _patched_new # type: ignore[method-assign]
cls.__init__ = _patched_init # type: ignore[method-assign]
except Exception: # noqa: BLE001
pass
import inspect as _inspect
# 收集所有继承自 PointerType 的类(含 _TypedPointerType)
_all_ir_classes: list = [
obj for _name, obj in vars(_llvmlite_ir).items()
if _inspect.isclass(obj)
]
for _cls in _all_ir_classes:
if issubclass(_cls, _llvmlite_ir.PointerType) or _cls is _llvmlite_ir.PointerType:
_PatchPointerInitAndNew(_cls)
# 同步 patch as_pointer() 的结果(它走的是 PointerType 构造器,但保险起见)
_as_pointer_patched = set()
def _PatchAsPointer(holder_cls) -> None:
if not hasattr(holder_cls, 'as_pointer') or id(holder_cls.as_pointer) in _as_pointer_patched:
return
_orig = holder_cls.as_pointer
def _PatchedAsPointer(self_self, *aa, **kk):
res = _orig(self_self, *aa, **kk)
rcur = res
while isinstance(rcur, _llvmlite_ir.PointerType):
if isinstance(getattr(rcur, 'pointee', None), _llvmlite_ir.VoidType):
return _I8.as_pointer()
rcur = getattr(rcur, 'pointee', None)
return res
try:
holder_cls.as_pointer = _PatchedAsPointer # type: ignore[attr-defined]
_as_pointer_patched.add(id(_orig))
except Exception: # noqa: BLE001
pass
for _obj in _all_ir_classes:
if hasattr(_obj, 'as_pointer') and callable(getattr(_obj, 'as_pointer', None)):
_PatchAsPointer(_obj)
_bootstrap()
+14
View File
@@ -121,6 +121,10 @@ class AssignHandle(BaseHandle):
return
ExistingPtr: ir.Value | None = None
# BUG-8 修复:清除读取全局变量时缓存的 GlobalVariable(非显式 global 声明)
if (VarName in Gen.variables and VarName not in Gen.global_vars
and isinstance(Gen.variables[VarName], ir.GlobalVariable)):
del Gen.variables[VarName]
if VarName in Gen.variables and Gen.variables[VarName] is not None:
VarPtr: ir.Value = Gen.variables[VarName]
if isinstance(VarPtr.type.pointee, ir.PointerType):
@@ -248,6 +252,10 @@ class AssignHandle(BaseHandle):
if VarName in ('mctx', 's1ctx', 's2ctx', 's5ctx'):
pass
if isinstance(Value.type, ir.PointerType) and isinstance(Value.type.pointee, (ir.LiteralStructType, ir.IdentifiedStructType)):
# BUG-8 修复:清除读取全局变量时缓存的 GlobalVariable(非显式 global 声明)
if (VarName in Gen.variables and VarName not in Gen.global_vars
and isinstance(Gen.variables[VarName], ir.GlobalVariable)):
del Gen.variables[VarName]
if VarName in Gen.variables and Gen.variables[VarName] is not None:
Gen._store(Value, Gen.variables[VarName])
else:
@@ -302,6 +310,12 @@ class AssignHandle(BaseHandle):
var: ir.AllocaInstr = Gen._allocaEntry(OldVal.type, name=VarName)
Gen._store(OldVal, var)
Gen.variables[VarName] = var
# BUG-8 修复:清除读取全局变量时缓存的 GlobalVariable(非显式 global 声明)。
# Python 语义:函数内无 global 声明时赋值应创建局部变量,
# 而非修改被读取缓存的全局变量。清除后走 L339 的正确逻辑。
if (VarName in Gen.variables and VarName not in Gen.global_vars
and isinstance(Gen.variables[VarName], ir.GlobalVariable)):
del Gen.variables[VarName]
if VarName in Gen.variables and Gen.variables[VarName] is not None:
VarPtr: ir.Value = Gen.variables[VarName]
TargetType: ir.Type | None = VarPtr.type.pointee if isinstance(VarPtr.type, ir.PointerType) else None
+31 -19
View File
@@ -1,20 +1,31 @@
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from lib.core.translator import Translator
from lib.core.Translator.LlvmGenerator import LlvmGeneratorMixin
import ast
import os
import re
import llvmlite.ir as ir
from lib.core.Handles.HandlesBase import BaseHandle, CTypeInfo, FuncMeta
from lib.core.VLogger import get_logger as _vlog
from lib.constants.config import mode as _config_mode
from lib.includes import t
from lib.includes.t import CTypeRegistry
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from lib.core.translator import Translator
from lib.core.Translator.LlvmGenerator import LlvmGeneratorMixin
import ast
import os
import re
import llvmlite.ir as ir
from lib.core.Handles.HandlesBase import BaseHandle, CTypeInfo, FuncMeta
from lib.core.VLogger import get_logger as _vlog
from lib.constants.config import mode as _config_mode
from lib.includes import t
from lib.includes.t import CTypeRegistry
from lib.core.SymbolUtils import IsTModule, ExtractTypeNameFromBinOp
def _safe_ptr_type(ty: ir.Type) -> ir.Type:
"""LLVM IR 中不允许 void* 指针,Ptr(VoidType) 统一替换为 i8*(对应 C 的 void* 语义)"""
if isinstance(ty, ir.PointerType):
cur: ir.Type = ty
while isinstance(cur, ir.PointerType):
if isinstance(cur.pointee, ir.VoidType):
return ir.IntType(8).as_pointer()
cur = cur.pointee
return ty
class ExprCallHandle(BaseHandle):
def _append_eh_msg_out_arg(self, CallArgs: list[ir.Value], func: ir.Function | None, Gen: LlvmGeneratorMixin) -> None:
if not func:
@@ -335,7 +346,7 @@ class ExprCallHandle(BaseHandle):
if ClosureInfo is not None:
# 闭包结构体解包:{i8* env, i8* fn} -> 加载 env 和 fn,构造正确函数签名
FnRetType: ir.Type = ClosureInfo[0]
NonlocalArgTypes: list[ir.Type] = ClosureInfo[1]
NonlocalArgTypes: list[ir.Type] = [_safe_ptr_type(t) for t in ClosureInfo[1]]
I8PtrType: ir.PointerType = ir.IntType(8).as_pointer()
ClosureStructType: ir.LiteralStructType = ir.LiteralStructType([I8PtrType, I8PtrType])
ClosureStructPtr: ir.Value = Gen.builder.bitcast(closure_ptr, ir.PointerType(ClosureStructType), name=f"cast_closure_{FuncName}")
@@ -356,10 +367,10 @@ class ExprCallHandle(BaseHandle):
FullArgTypes: list[ir.Type] = list(NonlocalArgTypes) + UserArgTypes
FullFnType: ir.FunctionType = ir.FunctionType(FnRetType, FullArgTypes)
FullFnPtr: ir.Value = Gen.builder.bitcast(FnVal, ir.PointerType(FullFnType), name=f"cast_fn_{FuncName}")
# 调用参数:env 对应 nonlocal 参数,bitcast 到正确类型
# 调用参数:env 对应 nonlocal 参数,bitcast 到正确类型(需 _safe_ptr_type 兜底避免 void*)
CallArgs: list[ir.Value] = []
if NonlocalArgTypes:
CallArgs.append(Gen.builder.bitcast(EnvVal, NonlocalArgTypes[0], name=f"cast_env_{FuncName}"))
CallArgs.append(Gen.builder.bitcast(EnvVal, _safe_ptr_type(NonlocalArgTypes[0]), name=f"cast_env_{FuncName}"))
CallArgs.extend(UserCallArgs)
return Gen.builder.call(FullFnPtr, CallArgs, name=f"call_{FuncName}")
# 普通函数指针调用(无闭包):从调用参数构造函数类型,默认返回 i32
@@ -391,9 +402,10 @@ class ExprCallHandle(BaseHandle):
if len(call_args) < len(expected_fn_type.args):
while len(call_args) < len(expected_fn_type.args):
call_args.append(ir.Constant(expected_fn_type.args[len(call_args)], 0))
# 如果函数期望的 env 类型与闭包中存储的 i8* 不同,做 bitcast
# 如果函数期望的 env 类型与闭包中存储的 i8* 不同,做 bitcast(避免 void*)
if len(expected_fn_type.args) > 0 and call_args[0].type != expected_fn_type.args[0]:
call_args[0] = Gen.builder.bitcast(call_args[0], expected_fn_type.args[0], name=f"cast_env_{FuncName}")
safe_env_type: ir.Type = _safe_ptr_type(expected_fn_type.args[0])
call_args[0] = Gen.builder.bitcast(call_args[0], safe_env_type, name=f"cast_env_{FuncName}")
return Gen.builder.call(fn_val, call_args, name=f"call_{FuncName}")
raise Exception(f"Undefined function: '{FuncName}'")
if isinstance(Node.func, ast.Subscript):
+21 -5
View File
@@ -7,6 +7,22 @@ import ast
import llvmlite.ir as ir
def _safe_ptr_type(ty: ir.Type) -> ir.Type:
"""LLVM IR 中不允许 void* 指针,统一替换为 i8*(对应 C 的 void* 语义)
当 ty 是 Ptr(VoidType) / Ptr(Ptr(VoidType)) / 任何包含 VoidType 作为 pointee 的指针链,
替换为 Ptr(i8)。非指针类型原样返回。
"""
if isinstance(ty, ir.PointerType):
# 单级 / 多级 void 指针全部降级为 i8*
cur: ir.Type = ty
while isinstance(cur, ir.PointerType):
if isinstance(cur.pointee, ir.VoidType):
return ir.IntType(8).as_pointer()
cur = cur.pointee
return ty
class ForHandle(BaseHandle):
def _HandleForLlvm(self, Node: ast.For) -> None:
Gen: "Translator.LlvmGen" = self.Trans.LlvmGen
@@ -361,14 +377,14 @@ class ForHandle(BaseHandle):
for var_name in nonlocal_var_names:
if var_name in Gen.variables and Gen.variables[var_name] is not None:
var: ir.Value = Gen.variables[var_name]
extra_params.append((var_name, var.type))
extra_params.append((var_name, _safe_ptr_type(var.type)))
elif var_name in Gen._reg_values:
OldVal: ir.Value = Gen._reg_values[var_name]
var: ir.AllocaInstr = Gen._allocaEntry(OldVal.type, name=var_name)
Gen._store(OldVal, var)
Gen.variables[var_name] = var
del Gen._reg_values[var_name]
extra_params.append((var_name, var.type))
extra_params.append((var_name, _safe_ptr_type(var.type)))
else:
# Search outer scope stack for the variable
found_var: ir.Value | None = None
@@ -379,13 +395,13 @@ class ForHandle(BaseHandle):
if found_var is not None:
# Add to current scope so it can be passed to nested functions
Gen.variables[var_name] = found_var
extra_params.append((var_name, found_var.type))
extra_params.append((var_name, _safe_ptr_type(found_var.type)))
else:
var = Gen._allocaEntry(ir.IntType(32), name=var_name)
Gen.variables[var_name] = var
extra_params.append((var_name, var.type))
extra_params.append((var_name, _safe_ptr_type(var.type)))
if extra_params:
Gen.nonlocal_params[Node.name] = [(name, ptr_type) for name, ptr_type in extra_params]
Gen.nonlocal_params[Node.name] = [(name, _safe_ptr_type(ptr_type)) for name, ptr_type in extra_params]
# Push current variables to scope stack before compiling nested function
Gen._variable_scope_stack.append(Gen.variables.copy())
saved_builder: ir.IRBuilder = Gen.builder
+12 -1
View File
@@ -7,6 +7,17 @@ import ast
import llvmlite.ir as ir
def _safe_ptr_type(ty: ir.Type) -> ir.Type:
"""LLVM IR 中不允许 void* 指针,Ptr(VoidType) 统一替换为 i8*"""
if isinstance(ty, ir.PointerType):
cur: ir.Type = ty
while isinstance(cur, ir.PointerType):
if isinstance(cur.pointee, ir.VoidType):
return ir.IntType(8).as_pointer()
cur = cur.pointee
return ty
class ReturnHandle(BaseHandle):
def _find_active_finally(self, Gen: "Translator.LlvmGen") -> tuple[ir.Block, ir.AllocaInstr, ir.AllocaInstr | None] | None:
for item in reversed(Gen.eh_finally_stack):
@@ -24,7 +35,7 @@ class ReturnHandle(BaseHandle):
nested_fn: ir.Function = Gen.functions[ret_name]
nonlocal_params: list[tuple[str, ir.Type]] = Gen.nonlocal_params[ret_name]
fn_return_type: ir.Type = nested_fn.function_type.return_type
nonlocal_types: list[ir.Type] = [t for _, t in nonlocal_params]
nonlocal_types: list[ir.Type] = [_safe_ptr_type(t) for _, t in nonlocal_params]
# 构建 env:收集所有 nonlocal 变量指针
env_ptrs: list[ir.Value] = []
for var_name, _ in nonlocal_params: