Norm 0.17
Norm 0.17 统一类型字面量、声明引用、运行时反射和 Annotation metadata,并将 @Document 建立为直接绑定代码声明的结构化文档入口。
声明引用与反射
T.class与Class<T>成为唯一类型反射入口;类型、nullable 和完整泛型实参在运行时保留;Owner.name.field、name.function与Owner.name.function分别产生强类型字段、顶层函数和未绑定方法引用;删除目标、不可见目标和无法唯一确定的重载在编译期失败;Field<Owner, Value>、Function<Signature>、Parameter<Value>与Constructor<T>统一公开声明 metadata,拦截器 context 直接携带相同引用;Class<T>枚举字段、函数和全部构造器,异构集合使用存在类型投影?保留类型边界;- 绑定方法使用
receiver.method,未绑定方法签名显式包含 receiver,并继续执行动态分派。
结构化 Annotation metadata
@Document使用一个description字段保存正文,并通过 nullable 的types、functions、fields列表关联代码声明;- Annotation 常量支持标量、声明引用及递归
List,nullable 参数可以省略; - 声明引用以 Core identity 保留,不把声明名或公开 ordinal 复制为第二信息源;
- Validation violation 复用函数、参数和字段引用,名称与类型继续从声明 metadata 查询。
编译器与工具链
Core schema、language semantics 与 definition identity 升级到 V11。Canonical Core 支持多个构造器、存在类型投影和类型化 Annotation 声明引用;Verifier、序列化、运行时、Formatter、语言服务与 VS Code 语法共享同一语义。
发布验收覆盖编译器、Core identity、JVM 与原生执行、声明引用删除和重载失败、runtime Annotation materialization、标准库、VS Code 扩展及文档构建。
迁移与边界
源码应将 reflect<T>() 与 Type<T> 改为 T.class 与 Class<T>,将 receiver::method 改为 receiver.method。旧字段反射的字符串类型与无类型读取接口由 Field<Owner, Value> 取代。Function<?> 只允许查询 metadata;执行函数需要精确的 Function<R(P...)>。
完整规则见声明引用与反射和 Annotation 规范。