refactor(handles): BuildPipeline/HandlesAnnAssign 深层短路合并

- BuildPipeline _CollectObjFilesImpl: .obj 判断与容量检查合并短路
- HandlesAnnAssign: 泛型特化 spec_name 提取降层(9→7)
- 行为语义保持不变
This commit is contained in:
TermiNexus committed 2026-08-12 21:15:16 +08:00
1 parent ea5b17f5fd
commit 98ddf7977e
2 files changed
+16 -15

No files matched your search

+11 -11
View File
@@ -466,17 +466,17 @@ def _CollectObjFilesImpl(base_dir: str, bd_len: t.CSizeT,
_mbuddy.free(sub_dir)
else:
# 检查是否是 .obj 文件
if fname_len > 4:
if fname[fname_len - 4] == '.' and fname[fname_len - 3] == 'o' and fname[fname_len - 2] == 'b' and fname[fname_len - 1] == 'j':
need: t.CSizeT = bd_len + 1 + fname_len + 2
if out_pos + need < out_size:
if out_pos > 0:
out_buf[out_pos] = ' '
out_pos += 1
viperlib.snprintf(out_buf + out_pos, need, "%s/%s", base_dir, fname)
out_pos += bd_len + 1 + fname_len
else:
break
if fname_len > 4 and fname[fname_len - 4] == '.' \
and fname[fname_len - 3] == 'o' and fname[fname_len - 2] == 'b' \
and fname[fname_len - 1] == 'j':
need: t.CSizeT = bd_len + 1 + fname_len + 2
if out_pos + need >= out_size:
break
if out_pos > 0:
out_buf[out_pos] = ' '
out_pos += 1
viperlib.snprintf(out_buf + out_pos, need, "%s/%s", base_dir, fname)
out_pos += bd_len + 1 + fname_len
if w32.win32file.FindNextFileA(handle, find_data) == 0:
break
+5 -4
View File
@@ -347,14 +347,15 @@ class AnnAssignHandle(HandlesBase.Mixin):
sub_nm: ast.Name | t.CPtr = (ast.Name | t.CPtr)(sub_annot.value)
if sub_nm.id is not None:
template_cd: ast.ClassDef | t.CPtr = HandlesClassDef._find_generic_template(sub_nm.id)
spec_name_ps: str = None
if template_cd is not None:
type_args_ps: list[str] | t.CPtr = HandlesExprCall._extract_type_args_from_slice(pool, sub_annot.slice)
if type_args_ps is not None and len(type_args_ps) > 0:
spec_name_ps: str = HandlesClassDef._specialize_generic_class(
spec_name_ps = HandlesClassDef._specialize_generic_class(
self.Trans, sub_nm.id, type_args_ps)
if spec_name_ps is not None:
resolved = HandlesType.resolve_annotation_type(
pool, annot, self.Trans._imported_modules, self.Trans._from_imports, self.Trans)
if spec_name_ps is not None:
resolved = HandlesType.resolve_annotation_type(
pool, annot, self.Trans._imported_modules, self.Trans._from_imports, self.Trans)
if resolved is not None:
var_ty = resolved
# 单参 t.CArray[elem_ty] + 列表字面量 → 静态数组(与 Handle 推断一致)。