fix(generic): 方法调用时缺少特化缓存则从头生成

list[AST*].get 等特化方法未生成时,调用 _specialize_generic_class 补全整个特化,而不只处理 declare_only 缓存。
This commit is contained in:
TermiNexus committed 2026-10-18 18:32:44 +08:00
1 parent ceb557314a
commit 10b3f90a24
1 file changed
+7
+7
View File
@@ -3018,6 +3018,13 @@ class ExprCallHandle(BaseHandle):
spec_cache = getattr(Gen, '_generic_class_specializations', {})
cached = spec_cache.get(spec_key)
if not isinstance(cached, tuple) or len(cached) < 2:
# 缓存中还没有该特化:直接从头生成完整特化(方法体随类特化一起产出)
try:
self.Trans.ClassHandler._specialize_generic_class(
base_name, ClassName[len(base_name) + 1:-1].split(']['),
Gen, declare_only=False)
except Exception:
pass
return
cached_name: str = cached[0]
was_declare_only: bool = cached[1]