refactor: 提取 _lookup_sha1_from_modname_raw,消除 HandlesExpr 重复的模块 SHA1 查找段

This commit is contained in:
TermiNexus committed 2026-08-08 00:02:39 +08:00
1 parent 0665ee1164
commit 94ae2aee52
2 files changed
+15 -21

No files matched your search

+2 -21
View File
@@ -1414,27 +1414,8 @@ def _lookup_cross_module_cdefine(pool: memhub.MemBuddy | t.CPtr,
return sub_val
return -1
# 2. 复制模块名到新缓冲区(lookup_from_import 返回的是内部指针)
# 截断于空格、null、或 ':'(别名格式的分隔符)
mod_len: t.CSizeT = 0
while mod_name_raw[mod_len] != ' ' and mod_name_raw[mod_len] != '\0' and mod_name_raw[mod_len] != ':':
mod_len += 1
mod_name_buf: str = pool.alloc(mod_len + 1)
if mod_name_buf is None:
return -1
for mi in range(mod_len):
mod_name_buf[mi] = mod_name_raw[mi]
mod_name_buf[mod_len] = '\0'
# 3. 去掉相对导入的前导点
base_mod: str = mod_name_buf
while base_mod[0] == '.':
base_mod = base_mod + 1
# 4. 查找模块的 SHA1
sha1: str = HandlesExprCall._lookup_module_sha1(base_mod)
if sha1 is None:
sha1 = HandlesExprCall._lookup_module_sha1_suffix(base_mod)
# 2. 截断模块名 → 去前导点 → 精确+后缀查找 SHA1(复用 HandlesExprCall 公共逻辑)
sha1: str = HandlesExprCall._lookup_sha1_from_modname_raw(pool, mod_name_raw)
if sha1 is None:
return -1
+13
View File
@@ -115,6 +115,19 @@ def _lookup_mod_sha1(pool: memhub.MemBuddy | t.CPtr,
from_imports, class_name, allow_star_fallback)
if mod_name_raw is None:
return None
return _lookup_sha1_from_modname_raw(pool, mod_name_raw)
# ============================================================
# _lookup_sha1_from_modname_raw - 原始模块名 → SHA1
#
# 截断模块名(lookup_from_import 返回内部指针,空格/冒号/null 分隔),
# 去掉相对导入前导点,再精确+后缀查找 SHA1。
# 供 _lookup_mod_sha1 与 HandlesExpr._lookup_cross_module_cdefine 复用。
# ============================================================
def _lookup_sha1_from_modname_raw(pool: memhub.MemBuddy | t.CPtr,
mod_name_raw: str) -> str:
"""从原始模块名查找 SHA1,返回 None=未找到"""
# 手动找到模块名结束位置(空格、null、或 ':' 别名分隔符),复制到新缓冲区
mod_len: t.CSizeT = 0
while mod_name_raw[mod_len] != ' ' and mod_name_raw[mod_len] != '\0' and mod_name_raw[mod_len] != ':':