fix(generic): 方法调用时缺少特化缓存则从头生成
list[AST*].get 等特化方法未生成时,调用 _specialize_generic_class 补全整个特化,而不只处理 declare_only 缓存。
This commit is contained in:
1 parent
ceb557314a
commit
10b3f90a24
1 file changed
+7
@@ -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]
|
||||
|
||||
Reference in new issue
Block a user