OpenAPITools / OpenAPITools/openapi-generator

[BUG] Forward slash in model keyword generates invalid Elixir code

Open
#17,980 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Issue: Bug
Dominant language
Java
Stars
26.8k
Forks
7.7k
PR merge metrics
PR metrics pending

Description

Bug Report Checklist
  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator (example)?
  • Have you tested with the latest master to confirm the issue still exists?
  • Have you searched for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description

Generating an Elixir client with a spec containing a model with a "/" character in a keyword produces Elixir code which does not compile.

The issue occurs in the generated struct definition, which ends up like this:

@derive Jason.Encoder
defstruct [
  :"height/round/step",
  :start_time,
 <snipped>
]

This produces a compile error:

** (Jason.EncodeError) invalid byte 0x2F in literal key: "height/round/step"

The error occurs because while the "/" is valid in an atom name when wrapped in quotes, it is not valid as a struct field name.

openapi-generator version

7.3.0

OpenAPI declaration file content or url

https://docs.cometbft.com/v0.38/rpc/openapi.yaml

Generation Details

Default settings

Steps to reproduce
openapi-generator-cli generate -i https://docs.cometbft.com/v0.38/rpc/openapi.yaml -g elixir -o ./openapi
cd openapi
mix do deps.get, compile
Related issues/PRs
Suggest a fix

Some kind of mapping may need to be generated for keywords that include characters not valid in struct fields.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the issue with the provided OpenAPI declaration and the openapi-generator-cli Elixir generation commands, then inspect the generated struct definition containing the slash-bearing keyword. Identify the Elixir generator path responsible for struct fields and verify completion by running mix do deps.get, compile without the invalid-byte error.

Written by the indexing model from the issue text.

Assessment

Tech stack
elixir
Domain
api
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.