From 22c71388d465f33f523d1cebbde5d9268ee11d2c Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Fri, 11 Sep 2026 22:09:32 +0800 Subject: [PATCH] =?UTF-8?q?docs(tpv):=20=E6=9B=B4=E6=96=B0=20TypeSpec=20?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=EF=BC=88IsPtrElement=20=E5=B7=B2=E5=88=A0?= =?UTF-8?q?=EF=BC=8C=E4=BB=85=E5=AE=B9=E5=99=A8=E7=A7=8D=E7=B1=BB=E5=BE=85?= =?UTF-8?q?=E5=90=8E=E7=BB=AD=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App/lib/core/Gen/Type/TypeSpec.vp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/App/lib/core/Gen/Type/TypeSpec.vp b/App/lib/core/Gen/Type/TypeSpec.vp index c70ce82..b2ea733 100644 --- a/App/lib/core/Gen/Type/TypeSpec.vp +++ b/App/lib/core/Gen/Type/TypeSpec.vp @@ -14,15 +14,17 @@ import lib.core.CompilerFactory as CompilerFactory # TPV 原有类型信息散落在「字符串 + 零散布尔」里 —— VarEntry.AnnotClassName / # FieldEntry.AnnotClassName(注解类名串当影子类型系统,S4 已删除并并入本结构 # 的 SourceName 字段)、VarEntry.IsPtrElement(单一布尔,只覆盖一种 8 字节 -# 步长情形)、FuncEntry.TypeStr(函数类型存文本,S4 已改由本结构的 -# SpecToLLVMText 从 Spec 派生),而 llvmlite.LLVMType 只保留解析结果、 -# 已抹平指针层级/数组维度/原始注解。 +# 步长情形,S4 已删除并并入本结构的 ElemBits 元素语义三元组)、 +# FuncEntry.TypeStr(函数类型存文本,S4 已改由本结构的 SpecToLLVMText 从 +# Spec 派生),而 llvmlite.LLVMType 只保留解析结果、已抹平指针层级/数组 +# 维度/原始注解。 # 结果是「是否无符号/指针几层/数组几维/函数签名」到处重复解析字符串 # (同一值被末段类名/完整限定名/精确名/mangled 前缀/截断串五种语义解释)。 # # 阶段:S1 只提供结构与构造/序列化;S2 各解析处「双写」;S3 逐块切读; -# S4 删旧字符串路径(FuncEntry.TypeStr 与 VarEntry/FieldEntry.AnnotClassName -# 已删除;IsPtrElement 与容器种类判断待后续)。 +# S4 删旧字符串路径 —— FuncEntry.TypeStr、VarEntry/FieldEntry.AnnotClassName、 +# VarEntry.IsPtrElement 均已删除,仅「容器种类判断」(list/dict/CPtr 的 +# 字符串子串判定)待后续。 # # 生命周期(设计 D1):实例与内部数组一律 `CompilerFactory.factory.PermPool` # 分配(契约见 CompilerFactory.vp:跨 mark 持久、从不 reset),故跨文件/跨模块