fix: 泛型返回类型短路/数组迭代/非工作区崩溃

- CallGenMixin: 本模块 mangled 调用从当前 IR 取返回类型, 不查自己的 text.ll(未生成误告警)
- HandlesFor: Ptr([N x T]) 数组退化指针 load 后走数组迭代
- Config: 配置字段默认 None/0, 避免垃圾指针通过 is not None 检查
- main: 无 project 配置且无 --src 时 fail-fast 退出(非工作区崩溃)
This commit is contained in:
TermiNexus committed 2026-08-11 23:14:27 +08:00
1 parent e7b0fecb99
commit a649e4807d
4 files changed
+87 -53

No files matched your search

+20 -17
View File
@@ -19,23 +19,26 @@ import w32.fileio as fileio
_mbuddy: memhub.MemManager | t.CPtr
# 配置值(从 project.vpj 加载)
SourceDir: str
BuildDir: str
TempDir: str # = {BuildDir}/temp(自动计算)
OutputDir: str # = {BuildDir}/output(自动计算)
ProjectName: str
ProjectVersion: str
CompilerCmd: str
CompilerFlags: str # 编译器参数(空格分隔,从 compiler.flags 数组拼接)
LinkerCmd: str
LinkerFlags: str # 链接器参数(空格分隔,从 linker.flags 数组拼接)
LinkerOutput: str
TargetTriple: str
TargetDataLayout: str
Sha1SliceLevel: t.CInt # SHA1 切片层数(目录分散等级)
StrictMode: t.CInt
IncludesDir: str # includes 目录路径(从 includes 数组首元素,兼容单目录场景)
IncludesDirs: str # 全部 includes 目录(空格分隔,多 includes 目录支持)
# 默认 None/0:未加载 project.vpj 时字段为 null,调用方 is not None
# 检查才能正确兜底(否则垃圾指针通过检查 → 用非法路径 → 崩溃,
# 尤其非工作区执行无配置时)。
SourceDir: str = None
BuildDir: str = None
TempDir: str = None # = {BuildDir}/temp(自动计算)
OutputDir: str = None # = {BuildDir}/output(自动计算)
ProjectName: str = None
ProjectVersion: str = None
CompilerCmd: str = None
CompilerFlags: str = None # 编译器参数(空格分隔,从 compiler.flags 数组拼接)
LinkerCmd: str = None
LinkerFlags: str = None # 链接器参数(空格分隔,从 linker.flags 数组拼接)
LinkerOutput: str = None
TargetTriple: str = None
TargetDataLayout: str = None
Sha1SliceLevel: t.CInt = 0 # SHA1 切片层数(目录分散等级)
StrictMode: t.CInt = 0
IncludesDir: str = None # includes 目录路径(从 includes 数组首元素,兼容单目录场景)
IncludesDirs: str = None # 全部 includes 目录(空格分隔,多 includes 目录支持)
def Load_project_config(path: str) -> int: