OpenAPITools / OpenAPITools/openapi-generator

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

Đang mở
#13,653 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Issue: Bug
Ngôn ngữ chính
Java
Star
26.8k
Fork
7.7k
Chỉ số merge pull request
Chỉ số pull request đang chờ

Mô tả

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.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Tái hiện vấn đề với đặc tả Stripe OpenAPI và lệnh tạo Elm được nêu trong báo cáo, sau đó kiểm tra đầu ra Elm được tạo để tìm các kiểu bị trùng lặp và xung đột. Được xem là hoàn thành khi các kiểu được tạo cùng với encoder, decoder và các tham chiếu của chúng không còn xung đột, đồng thời các định nghĩa giống hệt nhau không bị lặp lại.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
elm, openapi
Lĩnh vực
api, tooling
Loại issue
Lỗi
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
30/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.