-
-
Notifications
You must be signed in to change notification settings - Fork 7k
[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
Conversation
👍 Thanks for opening this 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.
a7b97a3
to
93fb48a
Compare
@@ -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<>(); |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
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
anddefaultIncludes
this time around. Improve reserved word checking.This now successfully generates
ModelList
,ModelFile
andModelClient
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
./bin/generate-samples.sh
to 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.master
CC @swipesight (2018/09) @jaumard (2018/09) @josh-burton (2019/12) @amondnet (2019/12) @sbu-WBT (2020/12) @kuhnroyal (2020/12) @agilob (2020/12)