xrain
|
7faea12a1e
|
docs: 宏增加 open 校验——@JsonExportFields 仅允许标注 open class,否则编译期报错
- 遍历 ClassDecl.modifiers 检查 TokenKind.OPEN(参考 soulsoft Extensions.cj isOpen)
- 非 open class / 非 class 声明 → throw MacroException 编译期报错
- 测试计划补充两条校验用例
|
2026-08-17 13:11:19 +08:00 |
|
xrain
|
a7ed2902f5
|
docs: 补充 soulsoft 参考实现分析与路线对比
- §1.5 读源码总结 soulsoft_serialization 的做法:宏给每个类生成 4 个序列化方法
+ superType 参数,继承靠编译期 super/静态方法调用链,零反射读字段
- §2 方案总览明确路线 A(入口不变+父类宏)为主方案
- §8 新增路线 A/B 取舍对比表,明确推荐路线 A 的理由:
保留 Serialize(obj)/Deserialize<T>(json) 免标注 API,只借 soulsoft
「宏生成静态类型字段代码」技巧
|
2026-08-17 12:48:03 +08:00 |
|
xrain
|
85b17ed8ab
|
docs: 父类字段序列化方案(宏 @JsonExportFields + 静态导出方法)
调研结论:Cangjie 反射对字段/prop/方法的声明类严格校验(declaringClass != instance 类型)
堵死运行时方案;宏无法编译期查询父类字段;编译器禁止子类遮蔽父类字段。
唯一可行通路(已实测):宏标注父类生成 exportJsonFields/importJsonFields 静态方法,
序列化库遍历 superClass 链通过静态方法反射调用(静态方法无实例声明类检查,
子类实例可直接作父类类型参数)。
|
2026-08-17 12:27:38 +08:00 |
|