-
-
Notifications
You must be signed in to change notification settings - Fork 6.8k
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
Bumped up Dart min version to 3.0.0 for json_serializable #20493
Bumped up Dart min version to 3.0.0 for json_serializable #20493
Conversation
thanks for the PR please follow step 3 to update the samples. |
9a54601
to
6788e45
Compare
@wing328, thank you. I've updated samples in PR. |
@@ -4,7 +4,7 @@ description: OpenAPI API client | |||
homepage: homepage | |||
|
|||
environment: | |||
sdk: '>=2.17.0 <4.0.0' | |||
sdk: '>=3.0.0 <4.0.0' |
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.
thanks for the PR
does it mean the output (dart API client) no longer work with Dart 2.x?
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.
Yes. I use json_serializable as serializationLibrary and I see error when I try to generate code via dart run build_runner build
with json_serializable:6.9.0. Here is example of error:
line 18, column 30 of .: Expected to find ')'.
╷
18 │ if (instance.message case final value?) 'message': value,
│ ^^^^
╵
json_serializable generates code with case clauses in if statements since 6.9.0.
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.
what about adding an option supportDart2
(default to false) for backward compatibility?
we can't ship a change that breaks all Dart 2.x users.
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.
Yes. I will add the option to PR.
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.
@wing328, I've pushed code for supporting Dart 2.x.
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.
thanks. i'll take another look
…on_serializable requires Dart 3.5 since 6.9.0
6788e45
to
3b34060
Compare
Hope this gets merged soon. It's a major pain right now. |
I don't understand why this is needed. Darts dependency resolution should take care of this, no versions are forced by the template. If you use Dart 3.5 and a matching json_serializable version everything should work. |
Also duplicate of #20460 |
@kuhnroyal, dart build_runner behaves differently. It uses minimal version of dart defined in target package pubspec.yaml. |
Ah ok I see. In any case, this was then fixed by #20460 |
I don't think the fallback is needed. I am just now in the process of dropping 2.x support in dio. And as I understand from this comment (#20460 (comment)) it doesn't work anyway. |
Visit this issue first showing the problem is very obscure without dependency error or automatics resolution: Also, for you and others visiting this PR, I suggest to read my answer here : |
Ok. If backward compatibility is not required yet, then I close this PR, because #20460 has already fixed problem. |
For future reference or if we want to gives some love to this PR later, if we really want to support >=dart2.x to <dart3.5 this PR can still be useful. But, I suggest to default on >=dart3.5. Calling the flag : useDartLegacy If only they didn't suspended the macros inside the Dart's build_runner https://dart.dev/language/macros That said, I'm embarrassed to say how much time I lost before I figured out the solution with my PR #20460. So, please build over and don't revert for anyone who wants to use openapi-generator with a new Dart project. |
The fundamental issue here is that json_serializable made a significant dependency change outside of a major version number, which shouldn't have happened. If someone still cares about dart 2.0 then this PR is useful but it would also have to lower to a major version of json_serializable etc. to make it work with dart 2.0 as a result. |
That said, lowering json_serializable will force to lower json_annotation which force to use an old dart dio version. Then, dart-dio generator for openapi will be stuck in very old version of Dio. I think json_annotation is the root cause. |
@mikefaille I agree, and with the focus of maintainability I am always in favor of dropping older versions. We all only have limited time to work on these open source projects. |
Bumped up Dart min version to 3.0.0 for json_serializable, because json_serializable requires Dart 3.5 since 6.9.0.
Error out about bump up Dart version has been added to json_serializable release 6.9.3
@jaumard @josh-burton @amondnet @sbu-WBT @kuhnroyal @agilob @ahmednfwela, could you review my PR?
PR checklist
Commit all changed files.
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*
.IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
master
(upcoming7.x.0
minor release - breaking changes with fallbacks),8.0.x
(breaking changes without fallbacks)