diff --git a/packages/quicktype-core/src/language/Ruby/RubyRenderer.ts b/packages/quicktype-core/src/language/Ruby/RubyRenderer.ts index 238674be59..bce64e9075 100644 --- a/packages/quicktype-core/src/language/Ruby/RubyRenderer.ts +++ b/packages/quicktype-core/src/language/Ruby/RubyRenderer.ts @@ -56,8 +56,11 @@ export class RubyRenderer extends ConvenienceRenderer { return true; } + // Classes and the unions that are emitted as classes (emitUnion) can be + // forward declared with `class Name < Dry::Struct; end`. protected canBeForwardDeclared(t: Type): boolean { - return t.kind === "class"; + if (t.kind === "class") return true; + return t.kind === "union" && this.unionNeedsName(t as UnionType); } protected forbiddenNamesForGlobalNamespace(): readonly string[] {