76 lines
1.9 KiB
Plaintext
76 lines
1.9 KiB
Plaintext
== Why is this an issue?
|
|
|
|
In Dart, you can use wildcard names(names consisting on underscores only: `++_++`, `++__++`, `++___++`, ... ). Usually it should be used to name the variable/parameter that won't be directly used but needs to be declared. For example, as counter in the for-loop:
|
|
|
|
`for (var _ in [1, 2, 3]) doSomething();`
|
|
|
|
or as a field, in the pattern:
|
|
|
|
[source,dart]
|
|
----
|
|
void sayHello(Person p) {
|
|
switch (p) {
|
|
case (name, _):
|
|
print('Hello, $name!');
|
|
}
|
|
}
|
|
----
|
|
|
|
Currently, this is possible to read such wildcard variables, for example, `print(_);`. However, such behavior is supposed to change in the next versions of the Dart language, making such variables non-binding and breaking the code, where such variables are used. To avoid problems during upgrades, it's recommended to refactor the code, to not use wildcard variables.
|
|
|
|
=== What is the potential impact?
|
|
|
|
Once the breaking change is introduced, you will need to update all the code using wildcard variables or parameters to be able to upgrade to the latest Dart language versions.
|
|
|
|
== How to fix it
|
|
|
|
If the variable/parameter are supposed to be read, then give them a proper name.
|
|
|
|
=== Code examples
|
|
|
|
==== Noncompliant code example
|
|
|
|
[source,dart,diff-id=1,diff-type=noncompliant]
|
|
----
|
|
void sayHello(String __) {
|
|
print('Hello, $__!');
|
|
}
|
|
----
|
|
|
|
==== Compliant solution
|
|
|
|
[source,dart,diff-id=1,diff-type=compliant]
|
|
----
|
|
void sayHello(String name) {
|
|
print('Hello, $name!');
|
|
}
|
|
----
|
|
|
|
== Resources
|
|
|
|
=== Documentation
|
|
|
|
* Dart Docs - https://dart.dev/tools/linter-rules/no_wildcard_variable_uses[Dart Linter rule - no_wildcard_variable_uses]
|
|
* Dart Docs - https://dart.dev/language/pattern-types#wildcard[wildcard pattern]
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
* The referenced identifier is a wildcard.
|
|
|
|
=== Highlighting
|
|
|
|
Wildcard identifier
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
endif::env-github,rspecator-view[]
|