Skip to content

[dart][dart-dio] Prevent name clashes with existing dart types #8198

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Dec 16, 2020

Conversation

kuhnroyal
Copy link
Contributor

Can not use dart import aliases for now as this is not supported by built_value. This means we need to add potentially clashing names/classes to an additionalReservedWords exclusion list. Starting with a basic list of some http/io classes.

Correctly use importMapping and defaultIncludes this time around. Improve reserved word checking.

This now successfully generates ModelList, ModelFile and ModelClient models which previously were not generated at all or were wrong types.

Also add some more test cases for correct model name generation.

This is a huge step as this fixes some of the last remaining problems in the dart-dio generator mentioned here: #8179

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • If contributing template-only or documentation-only changes which will change sample output, build the project beforehand.
  • Run the shell script ./bin/generate-samples.shto update all Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master. These must match the expectations made by your contribution. You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*. For Windows users, please run the script in Git BASH.
  • File the PR against the correct branch: master
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

CC @swipesight (2018/09) @jaumard (2018/09) @josh-burton (2019/12) @amondnet (2019/12) @sbu-WBT (2020/12) @kuhnroyal (2020/12) @agilob (2020/12)

@auto-labeler
Copy link

auto-labeler bot commented Dec 15, 2020

👍 Thanks for opening this issue!
🏷 I have applied any labels matching special text in your issue.

The team will review the labels and make any necessary changes.

Can not use dart import aliases for now as this is not supported by built_value. This means we need to add potentially clashing names/classes to an `additionalReservedWords` exclusion list. Starting with a basic list of some http/io classes.

Correctly use `importMapping` and `defaultIncludes` this time around. Improve reserved word checking.

This now successfully generates `ModelList`, `ModelFile` and `ModelClient` models which previously were not generated at all or were wrong types.
@@ -73,6 +73,10 @@
protected String apiTestPath = "test" + File.separator;
protected String modelTestPath = "test" + File.separator;

// Names that must not be used as model names because they clash with existing
// default imports (dart:io, dart:async, package:http etc.) but are not basic dataTypes.
protected Set<String> additionalReservedWords = new HashSet<>();
Copy link
Contributor

@agilob agilob Dec 15, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we initialize this once in constructor? No need for a HashSet constructor there when it's in DartClientCodegen() already

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this would also make sure children of DartClientCodegen make sure to call super() which is what we want I think

@wing328 wing328 added this to the 5.0.0 milestone Dec 16, 2020
@wing328 wing328 merged commit e1c43f1 into OpenAPITools:master Dec 16, 2020
@kuhnroyal kuhnroyal deleted the dart/type-conflicts branch December 16, 2020 10:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants