Skip to content

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 规范。

Norm 0.25