feat(tsl-syntax-reference): harden retrieval contracts

Add stable section IDs, structural and routing regressions, quickstart consistency checks, and CI enforcement.

BREAKING CHANGE: replace heading-derived Section IDs with explicit syntax-NN-NNN identifiers.
This commit is contained in:
csh
2026-07-31 10:05:15 +08:00
parent 21e688a436
commit 736d1a8ad7
30 changed files with 1635 additions and 137 deletions
@@ -4,10 +4,14 @@
## 本篇职责
<!-- section-id: syntax-19-001 -->
回答“怎样检查类信息、函数信息、对象运行时状态、弱引用创建和弱引用访问判定”。本页拥有反射与运行时状态查询;普通类编写、对象创建和方法调用不在本页收口,也不要因为本页存在反射能力就把普通调用改写成动态查找。
## 核心规则
<!-- section-id: syntax-19-002 -->
- 对象值可以用 `ifObj(...)` 做显式判定。
- 普通本地类创建仍默认使用 `new ClassName()`;本页的 `createObject(cls)` 只用于运行时已经拿到类类型变量后的创建场景。
- `class(Name)``findClass("Name")` 都可以拿到类类型。
@@ -36,8 +40,12 @@
## 可直接照写示例
<!-- section-id: syntax-19-003 -->
### 对象值与类类型
<!-- section-id: syntax-19-004 -->
<!-- tags: 判断是不是对象, 取类类型, 类型识别 -->
对象值的最小显式判定:
@@ -122,6 +130,8 @@ end;
### 类信息与对象状态
<!-- section-id: syntax-19-005 -->
<!-- tags: 对象属于哪个类, 反射, 类名, 运行时看类信息 -->
`classInfo(1)` 返回类类型:
@@ -225,6 +235,8 @@ end;
### 函数句柄与重载
<!-- section-id: syntax-19-006 -->
<!-- tags: 按名字找函数, 动态调用方法, 拿方法引用 -->
`findFunction(...)` 查找实例方法和类方法:
@@ -315,6 +327,8 @@ end;
### 函数信息、对象枚举与生命周期
<!-- section-id: syntax-19-007 -->
<!-- tags: 列出所有对象, 引用计数, 对象什么时候释放, 函数元信息 -->
`functionInfo` 的文档字段:
@@ -406,6 +420,8 @@ end;
### 弱引用与自动弱引用
<!-- section-id: syntax-19-008 -->
<!-- tags: 循环引用, 弱引用, 自动释放, 内存泄漏 -->
弱引用能力的条件编译判定:
@@ -543,6 +559,8 @@ end;
## 禁止项
<!-- section-id: syntax-19-009 -->
- 不要在运行时/反射页发明类声明、继承或构造语法;类基础事实见 [08_objects_and_classes.md](08_objects_and_classes.md)。
- 不要为了普通对象创建先写 `findClass(...)` / `createObject(...)`;普通本地类创建以 [08_objects_and_classes.md](08_objects_and_classes.md) 为准,默认用 `new ClassName()`
- 不要把函数句柄直接当普通函数直调;默认调用方式是 `f.do(...)`
@@ -572,6 +590,8 @@ end;
### 段落式 `weakRef` / `autoRef` 的正确写法
<!-- section-id: syntax-19-010 -->
<!-- tags: 弱引用段落写法, weakRef 不带分号 -->
段落式 `weakRef` / `autoRef`(不带分号)像 `public` / `private` 一样切换后续成员的弱引用属性: