diff --git a/App/lib/core/BuildPipeline.vp b/App/lib/core/BuildPipeline.vp index d53a060..c808f5d 100644 --- a/App/lib/core/BuildPipeline.vp +++ b/App/lib/core/BuildPipeline.vp @@ -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 diff --git a/App/lib/core/Handles/HandlesAnnAssign.vp b/App/lib/core/Handles/HandlesAnnAssign.vp index d3468ea..f7e324b 100644 --- a/App/lib/core/Handles/HandlesAnnAssign.vp +++ b/App/lib/core/Handles/HandlesAnnAssign.vp @@ -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 推断一致)。