Skip to content
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

prefer_collection_literals doesn't check if return types necessitate a constructor #4736

Closed
Hixie opened this issue Aug 31, 2023 · 0 comments
Assignees
Labels
false-positive set-recommended Affects a rule in the recommended Dart rule set

Comments

@Hixie
Copy link

Hixie commented Aug 31, 2023

The documentation for prefer_collection_literals lists some exceptions where the lint won't trigger ("There are cases with LinkedHashSet or LinkedHashMap where a literal constructor will trigger a type error so those will be excluded from the lint."). However, it seems the following case is missed:

LinkedHashSet<String> test1() => LinkedHashSet<String>(); // OK
LinkedHashSet<String> test2() { return LinkedHashSet<String>(); } // LINT (but should be OK)
@github-actions github-actions bot added the set-recommended Affects a rule in the recommended Dart rule set label Aug 31, 2023
@srawlins srawlins self-assigned this Aug 31, 2023
copybara-service bot pushed a commit to dart-lang/sdk that referenced this issue Sep 1, 2023
There is a basic premise in this rule which we cannot satisfy exactly:
we need to disallow `LinkedHashSet()` unless the context type requires
the developer to use `LinkedHashSet`. But the context type is long
gone when the lint rule is run.

This CL adds some logic to try to attempt figuring out the context
type in the cases where users have filed bugs, but it will never be
super accurate.

Fixes dart-lang/linter#4736
Fixes dart-lang/linter#3057
Fixes dart-lang/linter#1649
Fixes dart-lang/linter#2795

Change-Id: I3e6c6de81084dca2825488c89830ab3e7ea63186
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/323680
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
copybara-service bot pushed a commit to dart-lang/sdk that referenced this issue Sep 4, 2023
…pe more"

This reverts commit cd8a337.

Reason for revert: lint starts barking at the wrong tree: b/298917960

Original change's description:
> linter: Refactor prefer_collection_literals to use context type more
>
> There is a basic premise in this rule which we cannot satisfy exactly:
> we need to disallow `LinkedHashSet()` unless the context type requires
> the developer to use `LinkedHashSet`. But the context type is long
> gone when the lint rule is run.
>
> This CL adds some logic to try to attempt figuring out the context
> type in the cases where users have filed bugs, but it will never be
> super accurate.
>
> Fixes dart-lang/linter#4736
> Fixes dart-lang/linter#3057
> Fixes dart-lang/linter#1649
> Fixes dart-lang/linter#2795
>
> Change-Id: I3e6c6de81084dca2825488c89830ab3e7ea63186
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/323680
> Reviewed-by: Phil Quitslund <pquitslund@google.com>
> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
> Commit-Queue: Samuel Rawlins <srawlins@google.com>

Change-Id: I980053dd51ffd4447721e0ad7436b07ca704b554
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/324021
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Ilya Yanok <yanok@google.com>
copybara-service bot pushed a commit to dart-lang/sdk that referenced this issue Sep 5, 2023
…ntext type more""

This reverts commit cbdae14.

In addition, Fix prefer_collection_literals for methods with expression bodies

Original description:

linter: Refactor prefer_collection_literals to use context type more

There is a basic premise in this rule which we cannot satisfy exactly:
we need to disallow `LinkedHashSet()` unless the context type requires
the developer to use `LinkedHashSet`. But the context type is long
gone when the lint rule is run.

This CL adds some logic to try to attempt figuring out the context
type in the cases where users have filed bugs, but it will never be
super accurate.

Fixes dart-lang/linter#4736
Fixes dart-lang/linter#3057
Fixes dart-lang/linter#1649
Fixes dart-lang/linter#2795

Change-Id: I958ba69a56866c18523ce6cbf62645ef8e028f6b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/324260
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
false-positive set-recommended Affects a rule in the recommended Dart rule set
Projects
None yet
Development

No branches or pull requests

3 participants