[wildcards] `no_wildcard_variable_uses` feature awareness
Fixes: https://github.com/dart-lang/linter/issues/5072
Change-Id: I926ab733df2a8caaa3574fd4284618683780b37e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/381920
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
diff --git a/pkg/linter/lib/src/rules/no_wildcard_variable_uses.dart b/pkg/linter/lib/src/rules/no_wildcard_variable_uses.dart
index e1d8ec0..aa3b27d 100644
--- a/pkg/linter/lib/src/rules/no_wildcard_variable_uses.dart
+++ b/pkg/linter/lib/src/rules/no_wildcard_variable_uses.dart
@@ -5,6 +5,7 @@
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/extensions.dart'; //ignore: implementation_imports
import '../analyzer.dart';
import '../linter_lint_codes.dart';
@@ -62,6 +63,10 @@
@override
void registerNodeProcessors(
NodeLintRegistry registry, LinterContext context) {
+ if (context.libraryElement.hasWildcardVariablesFeatureEnabled) {
+ return;
+ }
+
var visitor = _Visitor(this);
registry.addSimpleIdentifier(this, visitor);
}
diff --git a/pkg/linter/test/rules/no_wildcard_variable_uses_test.dart b/pkg/linter/test/rules/no_wildcard_variable_uses_test.dart
index cfb690f..3f62ee8 100644
--- a/pkg/linter/test/rules/no_wildcard_variable_uses_test.dart
+++ b/pkg/linter/test/rules/no_wildcard_variable_uses_test.dart
@@ -19,6 +19,9 @@
test_constructor() async {
await assertNoDiagnostics(r'''
+// @dart = 3.4
+// (pre wildcard-variables)
+
class C {
C._();
m() {
@@ -31,6 +34,9 @@
test_declaredIdentifier() async {
await assertNoDiagnostics(r'''
+// @dart = 3.4
+// (pre wildcard-variables)
+
f() {
for (var _ in [1, 2, 3]) ;
}
@@ -39,6 +45,9 @@
test_field() async {
await assertNoDiagnostics(r'''
+// @dart = 3.4
+// (pre wildcard-variables)
+
class C {
int _ = 0;
m() {
@@ -50,6 +59,9 @@
test_getter() async {
await assertNoDiagnostics(r'''
+// @dart = 3.4
+// (pre wildcard-variables)
+
class C {
int get _ => 0;
m() {
@@ -72,8 +84,20 @@
]);
}
+ test_localVar_wildcardsEnabled() async {
+ // Ensure no lint.
+ await assertNoDiagnostics(r'''
+f() {
+ var _ = 1;
+}
+''');
+ }
+
test_method() async {
await assertNoDiagnostics(r'''
+// @dart = 3.4
+// (pre wildcard-variables)
+
class C {
String _() => '';
m() {
@@ -86,16 +110,22 @@
test_param() async {
await assertDiagnostics(r'''
+// @dart = 3.4
+// (pre wildcard-variables)
+
f(int __) {
print(__);
}
''', [
- lint(20, 2),
+ lint(64, 2),
]);
}
test_topLevelFunction() async {
await assertNoDiagnostics(r'''
+// @dart = 3.4
+// (pre wildcard-variables)
+
String _() => '';
f() {
@@ -107,6 +137,9 @@
test_topLevelGetter() async {
await assertNoDiagnostics(r'''
+// @dart = 3.4
+// (pre wildcard-variables)
+
int get _ => 0;
f() {