refactor: 全面 fail-fast 化(去兜底)+ 泛型补译/解引用宽度修复
- 全量降级点改 fail-fast:23 文件约 140+ 处静默 i32/i8*/void/continue 兜底改为 HandlesType.fatal_error(python traceback 风格)或 VLogger.error 终止,暴露上游根因;保留语言语义默认(无注解 i32/infer 链/CIf/star 回退) - 泛型特化 Phase B 补译 reemit 强制发射方法体(修复 list[...] define 缺失) - c.Deref 读取宽度仅按赋值直接 RHS 推断(修复 CurAssignAnnot 残留误判 i32) - 类型别名清理:t.CChar|t.CPtr→str、t.CInt→int 等
This commit is contained in:
1 parent
8f484f6860
commit
9d3483e97e
39 files changed
+1086
-738
No files matched your search
@@ -388,8 +388,8 @@ class AsmOperand:
|
||||
# ============================================================
|
||||
# _asm_append_cstr — 将 C 字符串 src 追加到 dst 末尾
|
||||
# ============================================================
|
||||
def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT,
|
||||
src: t.CChar | t.CPtr):
|
||||
def _asm_append_cstr(dst: str, dst_size: t.CSizeT,
|
||||
src: str):
|
||||
"""将 C 字符串 src 追加到 dst 末尾(委托到 gen._asm_append_cstr)"""
|
||||
import lib.core.Gen.Generator as Generator
|
||||
g: Generator.Generator | t.CPtr = (Generator.Generator | t.CPtr)(t.CVoid(_g_gen, t.CPtr))
|
||||
@@ -402,7 +402,7 @@ def _asm_append_cstr(dst: t.CChar | t.CPtr, dst_size: t.CSizeT,
|
||||
# \n → \0A, " → \22, \ → \5C
|
||||
# ============================================================
|
||||
def _asm_escape_for_ir(pool: memhub.MemBuddy | t.CPtr,
|
||||
src: t.CChar | t.CPtr) -> t.CChar | t.CPtr:
|
||||
src: str) -> str:
|
||||
"""转义汇编文本用于 LLVM IR 字符串字面量(委托到 gen._asm_escape_for_ir)"""
|
||||
import lib.core.Gen.Generator as Generator
|
||||
g: Generator.Generator | t.CPtr = (Generator.Generator | t.CPtr)(t.CVoid(_g_gen, t.CPtr))
|
||||
@@ -704,7 +704,7 @@ def _ensure_method_declare(pool: memhub.MemBuddy | t.CPtr,
|
||||
# _lookup_method_ret_ty_via_vpi - 从 vpi stub 返回注解缓存精确获取方法返回类型
|
||||
#
|
||||
# 方法定义处(.vpi stub)的返回注解(如 json.JsonValue._pool_alloc →
|
||||
# "t.CChar | t.CPtr")在 stub 注入时由 VpiReader 缓存(_cache_vpi_return_annots_text)。
|
||||
# "str")在 stub 注入时由 VpiReader 缓存(_cache_vpi_return_annots_text)。
|
||||
# 此函数按 模块SHA1 + 类名 + 方法名 查缓存并纯字符串解析为 LLVMType。
|
||||
# 无需硬编码白名单——返回类型始终来自方法定义处。
|
||||
# ============================================================
|
||||
@@ -1018,7 +1018,7 @@ def _translate_method_call(pool: memhub.MemBuddy | t.CPtr,
|
||||
# 跳过 % 前缀后逐字符比较
|
||||
# ============================================================
|
||||
def _kwarg_name_matches(kw_arg: str,
|
||||
param_name: t.CChar | t.CPtr) -> int:
|
||||
param_name: str) -> int:
|
||||
"""检查关键字参数名 kw_arg 是否匹配参数名 param_name(跳过 % 前缀)(委托到 gen._kwarg_name_matches)"""
|
||||
import lib.core.Gen.Generator as Generator
|
||||
g: Generator.Generator | t.CPtr = (Generator.Generator | t.CPtr)(t.CVoid(_g_gen, t.CPtr))
|
||||
@@ -1516,7 +1516,7 @@ class FuncEntry:
|
||||
# TypeStr: 函数类型文本(stdlib 深拷贝,跨文件安全)
|
||||
# 1b 每文件 reset_to(mark1) 回收 pool 内 Function 对象后,
|
||||
# vtable 生成 find_func_global 读类型改用此文本,避免悬空。
|
||||
TypeStr: t.CChar | t.CPtr
|
||||
TypeStr: str
|
||||
|
||||
# ============================================================
|
||||
# 初始化函数表
|
||||
@@ -1587,7 +1587,7 @@ def _init_global_func_table() -> int:
|
||||
# 用 stdlib.malloc 分配返回,跨文件永久存活(1b reset 不回收)。
|
||||
# 返回 None 表示失败。
|
||||
def _build_func_type_str(pool: memhub.MemBuddy | t.CPtr,
|
||||
func: llvmlite.Function | t.CPtr) -> t.CChar | t.CPtr:
|
||||
func: llvmlite.Function | t.CPtr) -> str:
|
||||
"""生成函数类型文本(stdlib 分配)(委托到 gen._build_func_type_str)"""
|
||||
import lib.core.Gen.Generator as Generator
|
||||
g: Generator.Generator | t.CPtr = (Generator.Generator | t.CPtr)(t.CVoid(_g_gen, t.CPtr))
|
||||
|
||||
Reference in new issue
Block a user