diff --git a/App/lib/core/Gen/Type/TypeGenResolve.vp b/App/lib/core/Gen/Type/TypeGenResolve.vp index 7416ec6..b1dcbd0 100644 --- a/App/lib/core/Gen/Type/TypeGenResolve.vp +++ b/App/lib/core/Gen/Type/TypeGenResolve.vp @@ -1985,6 +1985,15 @@ novirtual class TypeGenResolve(TypeGenBase.TypeGenBase): orig_mod: str = self.Gen.ImportsGen.lookup_from_import(from_imports, mod_buf, 0) if orig_mod is not None: sha1 = self.Gen.CallGenBase._lookup_sha1_from_modname_raw(pool, orig_mod) + # 4a'. `import X as Y`(同模块的 from_imports 里存 "Y:X")单独反查—— + # 与 extract_class_name_from_annotation 的别名还原同源(现场: + # GenTypes.vp 的 `import lib.core.Gen.Type.TypeSpec as TSpec`, + # 字段 `Spec: TSpec.TypeSpec*` 依赖此路径求 sha1 做前向声明)。 + if sha1 is None and from_imports is not None: + alias_mod: str = StubMergerStore.LookupModNameByAlias(from_imports, mod_buf) + if alias_mod is not None: + sha1 = self.Gen.CallGenBase._lookup_sha1_from_modname_raw(pool, alias_mod) + stdlib.free(alias_mod) # 4b. mod 本身是完整模块路径(无别名 import) if sha1 is None: sha1 = self.Gen.CallGenBase._lookup_sha1_from_modname_raw(pool, mod_buf)