diff --git a/App/lib/core/Gen/Call/CallGenLib.vp b/App/lib/core/Gen/Call/CallGenLib.vp index f880ff9..b3fedd4 100644 --- a/App/lib/core/Gen/Call/CallGenLib.vp +++ b/App/lib/core/Gen/Call/CallGenLib.vp @@ -6,6 +6,7 @@ import memhub import string import stdlib import lib.core.Gen.Translator as HT +import lib.Stub.StubGen.VpiReader as VpiReader from . import CallGenBase @@ -216,8 +217,6 @@ class CallGenLib(CallGenBase.CallGenBase): """把跨模块调用实参 coerce 到 vpi 定义侧形参类型,返回重建的实参链""" if pool is None or builder is None or call_name is None or head is None: return head - # 函数内懒 import:与 _lookup_method_ret_ty_via_vpi 同源,规避顶层循环依赖 - import lib.Stub.StubGen.VpiReader as VpiReader if self._is_sha1_mangled_call(call_name) == 0: return head # 拆 {sha1}.{rest}:rest 含 '.' 则为 {cls}.{method},否则为 {func} diff --git a/App/lib/core/Gen/Type/TypeSpec.vp b/App/lib/core/Gen/Type/TypeSpec.vp index 3151b48..cac8e3b 100644 --- a/App/lib/core/Gen/Type/TypeSpec.vp +++ b/App/lib/core/Gen/Type/TypeSpec.vp @@ -5,6 +5,7 @@ import memhub import string import viperlib import lib.core.CompilerFactory as CompilerFactory +import lib.core.Gen.GenApi as GenApi # ============================================================ @@ -845,10 +846,7 @@ def InternSpec(arena: TypeSpecArena | t.CPtr, # 不能返回 None —— 调用链会把 None 一路传到 entry.Spec,条目**静默失去类型信息** # (如 _entry_spec_unsigned 恒返回 0 ⇒ zext/sext 方向取错),属静默数据损坏, # 与「不兜底 / fail-fast」原则直接冲突(原注释声称 fail-fast,实现却只返回 None)。 - # 破环:TypeSpec 与 GenApi 互为依赖(GenApi→GenTypes→TypeSpec),故**函数内懒 import** - # (同 CallGenLib.vp:220「函数内懒 import 规避顶层循环依赖」的既有模式)。 if arena.Count >= arena.Cap: - import lib.core.Gen.GenApi as GenApi GenApi.fatal_error( None, f"TypeSpec 驻留表已满(上限 {arena.Cap} 条),无法登记新类型",