This is an automated email from the ASF dual-hosted git repository. chaokunyang pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/fory-site.git
commit e3ec17c437b5c76fc63c3f76cafa6f44b179ad88 Author: chaokunyang <[email protected]> AuthorDate: Wed May 27 08:54:12 2026 +0000 🔄 synced local 'docs/compiler/' with remote 'docs/compiler/' --- docs/compiler/generated-code.md | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/docs/compiler/generated-code.md b/docs/compiler/generated-code.md index 3c9d8899fb..089bf5ae31 100644 --- a/docs/compiler/generated-code.md +++ b/docs/compiler/generated-code.md @@ -787,16 +787,26 @@ public sealed partial class Person } ``` -Unions generate `[ForyUnion]` `Union` subclasses with typed case helpers: +Unions generate `[ForyUnion]` ADTs. Case ID `0` is the unknown-case +carrier; schema-defined cases use positive `[ForyCase]` IDs. If a case needs +non-default schema encoding, the generated `[ForyCase]` carries `Type`. Known +case record names are PascalCase FDL case names; payload types are emitted as +qualified references when needed to avoid name conflicts. ```csharp [ForyUnion] -public sealed class Animal : Union +public abstract partial record Animal { - public static Animal Dog(Dog value) { ... } - public static Animal Cat(Cat value) { ... } - public bool IsDog => ...; - public Dog DogValue() { ... } + private Animal() {} + + [ForyCase(0)] + public sealed partial record UnknownCase(int CaseId, object? Value) : Animal; + + [ForyCase(1)] + public sealed partial record Dog(global::addressbook.Dog Value) : Animal; + + [ForyCase(2)] + public sealed partial record Cat(global::addressbook.Cat Value) : Animal; } ``` --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
