OpenAPITools / OpenAPITools/openapi-generator

[BUG] [Elm] Outputs duplicate types, as well as overlapping types with same name

Aperta
#13,653 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Issue: Bug
Lingua principale
Java
Stelle
26.8k
Fork
7.7k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

Bug Report Checklist
  • Have you provided a full/minimal spec to reproduce the issue?
  • Using the full Stripe API spec.

  • Have you validated the input using an OpenAPI validator (example)?
  • I used the CLI with validate and it found no issues.

  • Have you tested with the latest master to confirm the issue still exists?
  • Yes

  • Have you searched for related issues/PRs?
  • What's the actual output vs expected output?
Description
openapi-generator version

Latest master

OpenAPI declaration file content or url

https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json

Generation Details
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate    -i https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json    -g elm    -o ./elm-stripeFix

All in the same file, there will be this Status:

type Status
    = StatusActive
    | StatusBlocked
    | StatusInactive


statusVariants : List Status
statusVariants =
    [ StatusActive
    , StatusBlocked
    , StatusInactive
    ]


stringFromStatus : Status -> String
stringFromStatus model =
    case model of
        StatusActive ->
            "active"

        StatusBlocked ->
            "blocked"

        StatusInactive ->
            "inactive"

...right along with this Status somewhere else:

type Status
    = StatusExpired
    | StatusLost
    | StatusSubmitted
    | StatusUnsubmitted
    | StatusWon


statusVariants : List Status
statusVariants =
    [ StatusExpired
    , StatusLost
    , StatusSubmitted
    , StatusUnsubmitted
    , StatusWon
    ]


stringFromStatus : Status -> String
stringFromStatus model =
    case model of
        StatusExpired ->
            "expired"

        StatusLost ->
            "lost"

        StatusSubmitted ->
            "submitted"

        StatusUnsubmitted ->
            "unsubmitted"

        StatusWon ->
            "won"


Obviously this causes a conflict, and fixing it is not trivial as all references to Status are now ambiguous.

Suggest a fix

Ideally, have types belonging to different domains go in separate type modules.

At the least, add a number or underscore to the end of one of them if need be.

Naive fix would be to merge the enums and just treat them as one.

Also, this includes totally identical types and encoder/decoders. They can have everything exactly the same, and still be repeated 5 different places in the file.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Riproduci il problema con la specifica Stripe OpenAPI e il comando di generazione Elm mostrato nel report, quindi ispeziona l’output Elm generato alla ricerca di tipi duplicati e in conflitto. Il lavoro è completato quando i tipi generati e i relativi encoder, decoder e riferimenti non entrano più in conflitto e le definizioni identiche non vengono ripetute.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
elm, openapi
Ambito
api, tooling
Tipo di issue
Bug
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
30/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.