从零实现增量源生成器 · 第 12 / 17 篇

可空、泛型与嵌套类型,为什么总是高风险回归点

主路径一旦能跑,最容易被忽略的就是可空、泛型和嵌套类型;而这些恰恰最容易让生成器在真实项目里失效。

一个只在“普通 public class + 普通属性”上能跑的生成器,离工程可用还很远。真正拉开差距的,往往是边界条件处理。

当前主案例重点守住三类高风险点:

  • 可空引用和值类型
  • 泛型类型参数与约束
  • 嵌套类型及其外层 partial 约束

为什么这三类特别危险

因为它们都会同时影响建模和渲染。

例如泛型类型不仅影响类型名,还影响约束子句;嵌套类型不仅影响输出结构,还影响外层类型是否必须 partial;可空类型不仅影响属性模型,还影响最终插值表达式。

当前项目怎么处理

建模阶段会把这些信息提前抽出来,而不是等渲染时临时判断。这样渲染层拿到的已经不是模糊的 Symbol,而是明确的:

  • NameWithTypeParameters
  • ConstraintClauses
  • NeedsNullGuard
  • ContainingTypes

一个特别容易漏掉的点

不是只有目标类型要 partial,外层嵌套类型也必须能被重新打开。当前项目把这件事直接做成了诊断,而不是等编译器报更模糊的错误。

边界条件处理得越早,生成器越像一个可维护系统,而不是只会走演示路径的样板代码。

教程导航

继续阅读

当前文章已经挂到教程顺序中,建议按相邻章节继续。

上一篇 为什么 hint name 不是随便起一个文件名 hint name 决定生成文件的身份边界;对嵌套类型和多目标输入来说,它不是装饰,而是稳定输出的一部分。 下一篇 诊断不是附属品,而是生成器契约的一部分 好的生成器不会在非法输入上默默失败,而是会明确告诉调用方为什么不能生成。
查看系列目录 查看全部文章

标签

分类