extension type support for `avoid_shadowing_type_parameters` (dart-lang/linter#4693)
diff --git a/lib/src/rules/avoid_shadowing_type_parameters.dart b/lib/src/rules/avoid_shadowing_type_parameters.dart
index a8bb0f6..f9f7789 100644
--- a/lib/src/rules/avoid_shadowing_type_parameters.dart
+++ b/lib/src/rules/avoid_shadowing_type_parameters.dart
@@ -98,6 +98,9 @@
_checkForShadowing(typeParameters, parent.typeParameters, 'enum');
} else if (parent is ExtensionDeclaration) {
_checkForShadowing(typeParameters, parent.typeParameters, 'extension');
+ } else if (parent is ExtensionTypeDeclaration) {
+ _checkForShadowing(
+ typeParameters, parent.typeParameters, 'extension type');
} else if (parent is MethodDeclaration) {
_checkForShadowing(typeParameters, parent.typeParameters, 'method');
} else if (parent is MixinDeclaration) {
diff --git a/test/rules/avoid_shadowing_type_parameters_test.dart b/test/rules/avoid_shadowing_type_parameters_test.dart
index fb713ba..7cf3a51 100644
--- a/test/rules/avoid_shadowing_type_parameters_test.dart
+++ b/test/rules/avoid_shadowing_type_parameters_test.dart
@@ -8,13 +8,15 @@
main() {
defineReflectiveSuite(() {
- defineReflectiveTests(AvoidShadowingTypeParametersEnumTest);
defineReflectiveTests(AvoidShadowingTypeParametersTest);
});
}
@reflectiveTest
-class AvoidShadowingTypeParametersEnumTest extends LintRuleTest {
+class AvoidShadowingTypeParametersTest extends LintRuleTest {
+ @override
+ List<String> get experiments => ['inline-class'];
+
@override
String get lintRule => 'avoid_shadowing_type_parameters';
@@ -28,12 +30,16 @@
lint(33, 1),
]);
}
-}
-@reflectiveTest
-class AvoidShadowingTypeParametersTest extends LintRuleTest {
- @override
- String get lintRule => 'avoid_shadowing_type_parameters';
+ test_extensionType() async {
+ await assertDiagnostics(r'''
+extension type E<T>(int i) {
+ void m<T>() {}
+}
+''', [
+ lint(38, 1),
+ ]);
+ }
test_wrongNumberOfTypeArguments() async {
await assertDiagnostics(r'''