Files
ViperC/App
TermiNexus 75ea6fb9b2 fix(transpyv): 消除隐式向下转型(ast.AST* 实参 → 派生 AST 形参)
c 源码违规(严格指针规则:基类指针传派生类形参属向下转型,须显式转换):

1) TranslatorGenMixin._prescan_funcdef_signatures:形参由 ast.FunctionDef* 改为
   ast.AST*,函数体内显式 `fd: ast.FunctionDef* = ast.FunctionDef*(node)`。
   理由:模块级调度器只持有 ast.AST* 子节点,同一处调用的
   translate_function_def / translate_class_def / _register_cexport_from_funcdef
   形参一律是 ast.AST*,本函数是唯一例外(报错现场:第 2 个实参 %"..AST"* 不能
   隐式转为形参 %"..FunctionDef"*)。改为与兄弟入口同口径,调用点无需改动。

2) CallGenDispatch len() 内置分支:_is_list_builtin_receiver 第 5 形参是
   ast.Call*(仅用于 D25 fail-fast 定位节点),实参 len_arg_node 声明为基类
   ast.AST* ⇒ 显式窄化 `len_arg_cl: ast.Call* = ast.Call*(len_arg_node)`。

附:对 App\lib 全量静态扫描(core\Gen 全 47 文件 + Stub/Phase/core/main)确认
此类「基类指针实参 → 派生形参」的隐式向下转型仅此两处,其余调用点均为同类型
或向上转型(规则允许)。

同文件另含仓库内既有书写整理(续行合并),无行为变化。
2026-09-28 20:20:56 +08:00
..