-
Notifications
You must be signed in to change notification settings - Fork 341
Open
Labels
Description
Clear and concise description of the problem
Currently, in @discriminated(#{ envelope: "none"}) unions, we require variants to be models that have the discriminator property on them set to the correct value (Error: invalid-discriminated-union-variant if not). I propose that we allow a discriminated union variant to also be a union if each variant of the sub-union conforms to the discriminator property rule. This would allow constructs like the following:
@discriminated(#{ envelope: "none", discriminatorPropertyName: "kind" })
union X {
a: A;
b: B;
}
model A {
kind: "a";
//...
}
@discriminated(#{ envelope: "none", discriminatorPropertyName: "bKind" })
union B {
c: C;
d: D;
}
model C {
kind: "b";
bKind: "c";
// ...
}
model D {
kind: "b";
bKind: "d";
// ...
}I ran into this trying to describe a schema with this sort of structure, where one of the variants of a top level union discriminated by "kind" itself has several subvariants discriminated by its own separate property.
Checklist
- Follow our Code of Conduct
- Read the docs.
- Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
Reactions are currently unavailable