mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2026-03-24 01:39:08 +00:00
[OCaml][Fix] Unreferenced enum + Direct recursive types (#23005)
* [OCaml] Fix bugs around enum parsing Problem: The OCaml client generator threw IllegalArgumentException: Unreferenced enum when encountering enums inside composed schemas (anyOf/allOf/oneOf). Root Causes: 1. The enum collection logic didn't traverse into composed schemas 2. The enum hashing used order-dependent string concatenation, causing lookups to fail when enum values appeared in different orders 3. Enums directly within composed schema branches (not in properties) weren't collected Solution: 1. Added composed schema support: - New `collectEnumSchemasFromComposed()` method handles `anyOf/allOf/oneOf` - New `collectEnumSchemasFromList()` method recursively processes composed schema branches - Enums directly in composed schemas (not just in properties) are now collected 2. Refactored enum hashing to use Set: - Changed from comma-joined strings to `TreeSet<String>` for order-independent, collision-free hashing - Handles edge cases like empty string enums `""` 3. Added test case: - Tests enums in nested composed schemas - Tests enum with empty string value in anyOf * OCaml: Add support for direct recursive types * OCaml: Fix enums in anyOf * OCaml: fix recursive types * Fix recursion tests * Fix recursive types, improve tests * [OCaml] Improve title of generated README.md
This commit is contained in:
8
.github/workflows/samples-ocaml.yaml
vendored
8
.github/workflows/samples-ocaml.yaml
vendored
@@ -7,12 +7,16 @@ on:
|
||||
- 'samples/client/petstore/ocaml-fake-petstore/**'
|
||||
- 'samples/client/petstore/ocaml-oneOf-primitive/**'
|
||||
- 'samples/client/petstore/ocaml-additional-properties/**'
|
||||
- 'samples/client/petstore/ocaml-enum-in-composed-schema/**'
|
||||
- 'samples/client/petstore/ocaml-recursion-test/**'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'samples/client/petstore/ocaml/**'
|
||||
- 'samples/client/petstore/ocaml-fake-petstore/**'
|
||||
- 'samples/client/petstore/ocaml-oneOf-primitive/**'
|
||||
- 'samples/client/petstore/ocaml-additional-properties/**'
|
||||
- 'samples/client/petstore/ocaml-enum-in-composed-schema/**'
|
||||
- 'samples/client/petstore/ocaml-recursion-test/**'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@@ -26,12 +30,14 @@ jobs:
|
||||
- 'samples/client/petstore/ocaml-fake-petstore/'
|
||||
- 'samples/client/petstore/ocaml-oneOf-primitive/'
|
||||
- 'samples/client/petstore/ocaml-additional-properties/'
|
||||
- 'samples/client/petstore/ocaml-enum-in-composed-schema/'
|
||||
- 'samples/client/petstore/ocaml-recursion-test/'
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- name: Set-up OCaml
|
||||
uses: ocaml/setup-ocaml@v3
|
||||
with:
|
||||
ocaml-compiler: 5
|
||||
ocaml-compiler: 5.3
|
||||
- name: Install
|
||||
run: opam install . --deps-only --with-test
|
||||
working-directory: ${{ matrix.sample }}
|
||||
|
||||
Reference in New Issue
Block a user