diff --git a/App/lib/core/Gen/Type/TypeGenResolve.vp b/App/lib/core/Gen/Type/TypeGenResolve.vp index 4a18bbf..2419d05 100644 --- a/App/lib/core/Gen/Type/TypeGenResolve.vp +++ b/App/lib/core/Gen/Type/TypeGenResolve.vp @@ -1343,6 +1343,15 @@ novirtual class TypeGenResolve(TypeGenBase.TypeGenBase): if ty_sz is None: return 0 bits_sz: int = self.Gen.TypeGenErr.get_llvm_type_bits(ty_sz) + if bits_sz <= 0: + # 浮点类型必须另取浮点位宽:get_llvm_type_bits 只认整数(Float/Double/ + # Half/FP128 一律返回 0),缺这一步会让**浮点** typedef 的尺寸解析恒失败 + # (返回 0)⇒ 调用方(如 __sizeof__ 快径 CallGenDispatch._tc_h5)落回 + # "把接收者 Name(T) 当实例翻译" → "NameError: 未定义名称 'T'"。 + # 现场:Test/VectorGenericTest/App/vectortest.vp:32 + # `vector.Vector[CFloat64T]`(T.__sizeof__(),vector.vp:12)——同文件 + # 第 15 行 Vector[CInt] 走整数路径正常,故只有浮点特化暴露。 + bits_sz = self.Gen.ExprGenBase.get_llvm_float_bits(ty_sz) if bits_sz <= 0: return 0 return bits_sz // 8