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

bad warning for LinkedHashMap constructor (prefer_collection_literals) #3057

Closed
keithshep opened this issue Nov 4, 2021 · 2 comments
Closed
Assignees
Labels
false-positive P2 A bug or feature request we're likely to work on set-recommended Affects a rule in the recommended Dart rule set

Comments

@keithshep
Copy link

Describe the issue

The linter gives a bad warning for LinkedHashMap constructor: "Use collection literals when possible."

To Reproduce

void testLinkedHashMap() {
  final LinkedHashMap<String, String> x;
  x = LinkedHashMap<String, String>();
  print(x.length);
}

if the suggestion is followed to convert to a literal invalid code is generated: x = <String, String>{};

Expected behavior

No such warning for LinkedHashMap()

@pq pq added false-positive set-recommended Affects a rule in the recommended Dart rule set labels Nov 4, 2021
@pq
Copy link
Member

pq commented Nov 4, 2021

Thanks for the report and repro @keithshep !

@jamesderlin
Copy link

Duplicate of #1649.

@pq pq added the P2 A bug or feature request we're likely to work on label Nov 14, 2022
@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 P2 A bug or feature request we're likely to work on set-recommended Affects a rule in the recommended Dart rule set
Projects
None yet
Development

No branches or pull requests

4 participants