fix(symbol): 补齐泛型实参原始名与浮点串集合
定义 _GENERIC_ARG_RAW_NAMES 与 _LLVM_FLOAT_STRINGS,修复 GenericArgRawName / MangleTypeArgByRegistry 的 NameError。
This commit is contained in:
1 parent
e47b5e4a11
commit
3081d71570
1 file changed
+11
-1
+11
-1
@@ -2736,6 +2736,16 @@ def NormalizeGenericArgName(NameId: str) -> str:
|
||||
return NameId
|
||||
|
||||
|
||||
_LLVM_FLOAT_STRINGS: frozenset[str] = frozenset({'half', 'float', 'double', 'fp128'})
|
||||
|
||||
_GENERIC_ARG_RAW_NAMES: dict[str, str] = {
|
||||
'int': 'CInt', 'char': 'CChar', 'bool': 'CBool',
|
||||
'float': 'CFloat', 'double': 'CDouble', 'void': 'CVoid',
|
||||
}
|
||||
for _generic_short_name, _generic_class in TypeSystem.BUILTIN_TYPE_ALIASES.items():
|
||||
_GENERIC_ARG_RAW_NAMES.setdefault(_generic_short_name, _generic_class.__name__)
|
||||
|
||||
|
||||
def GenericArgRawName(NameId: str) -> str:
|
||||
"""ast.Name 泛型实参 → 替换模板 T 用的原始类型名(_resolve_generic_slice_type
|
||||
的第二返回值):'int' → 'CInt'(内建类型须用源码名替换 T,见
|
||||
@@ -2749,7 +2759,7 @@ def MangleTypeArgByRegistry(ArgStr: str) -> str:
|
||||
"""实参串 → 最终 mangled 实参(HandlesClassDef._mangle_generic_class_name
|
||||
的单项逻辑,逐分支同构):t 类型名经 NameToLLVM 归一(CInt32T → 'i32',
|
||||
'CInt'/'CInt' 先去模块前缀再归一),浮点按 Size 归一为 f{n}
|
||||
(CDouble → 'f8'),未注册名原样保留(含指针层数与已解析的内层名)。
|
||||
(CDouble → 'f64'),未注册名原样保留(含指针层数与已解析的内层名)。
|
||||
"""
|
||||
LookupStr: str = ArgStr
|
||||
LlvmStr: str | None = CTypeRegistry.NameToLLVM(LookupStr)
|
||||
|
||||
Reference in new issue
Block a user