Skip to content

Commit 69c6a3c

Browse files
pqCommit Queue
authored and
Commit Queue
committed
extension type support for deprecated_member_use_from_same_package
Fixes: https://github.com/dart-lang/linter/issues/4715 Change-Id: I8584facf340c7818d539b9182ebb50c12484114e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/322580 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Phil Quitslund <[email protected]>
1 parent 0f39236 commit 69c6a3c

File tree

2 files changed

+79
-0
lines changed

2 files changed

+79
-0
lines changed

pkg/linter/lib/src/rules/deprecated_member_use_from_same_package.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,18 @@ class _RecursiveVisitor extends RecursiveAstVisitor<void> {
275275
super.visitExtensionOverride(node);
276276
}
277277

278+
@override
279+
void visitExtensionTypeDeclaration(ExtensionTypeDeclaration node) {
280+
_deprecatedVerifier
281+
.pushInDeprecatedValue(node.declaredElement?.hasDeprecated ?? false);
282+
283+
try {
284+
super.visitExtensionTypeDeclaration(node);
285+
} finally {
286+
_deprecatedVerifier.popInDeprecated();
287+
}
288+
}
289+
278290
@override
279291
void visitFieldDeclaration(FieldDeclaration node) {
280292
_deprecatedVerifier.pushInDeprecatedMetadata(node.metadata);

pkg/linter/test/rules/deprecated_member_use_from_same_package_test.dart

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,16 @@ extension E on C {}
110110
''');
111111
}
112112

113+
test_deprecatedClass_usedInDeprecatedExtensionTypeRepresentation() async {
114+
await assertNoDiagnostics(r'''
115+
@deprecated
116+
class C {}
117+
118+
@deprecated
119+
extension type E(C c) { }
120+
''');
121+
}
122+
113123
test_deprecatedClass_usedInDeprecatedField_initializer() async {
114124
await assertNoDiagnostics(r'''
115125
@deprecated
@@ -208,6 +218,17 @@ C? x;
208218
''');
209219
}
210220

221+
test_deprecatedClass_usedInExtensionTypeRepresentation() async {
222+
await assertDiagnostics(r'''
223+
@deprecated
224+
class C {}
225+
226+
extension type E(C c) { }
227+
''', [
228+
lint(41, 1),
229+
]);
230+
}
231+
211232
test_deprecatedClass_usedInFieldFormalParameter() async {
212233
await assertDiagnostics(r'''
213234
@deprecated
@@ -364,6 +385,52 @@ var x = E(0).f();
364385
]);
365386
}
366387

388+
test_deprecatedExtensionType_usedInExtensionTypeImplements() async {
389+
await assertDiagnostics(r'''
390+
@deprecated
391+
extension type E(int i) { }
392+
393+
extension type F(int i) implements E { }
394+
''', [
395+
lint(76, 1),
396+
]);
397+
}
398+
399+
test_deprecatedExtensionType_usedInExtensionTypeRepresentation() async {
400+
await assertDiagnostics(r'''
401+
@deprecated
402+
extension type E(int i) { }
403+
404+
extension type F(E c) { }
405+
''', [
406+
lint(58, 1),
407+
]);
408+
}
409+
410+
test_deprecatedExtensionType_usedInField() async {
411+
await assertDiagnostics(r'''
412+
@deprecated
413+
extension type E(int i) { }
414+
415+
class C {
416+
E? e;
417+
}
418+
''', [
419+
lint(53, 1),
420+
]);
421+
}
422+
423+
test_deprecatedExtensionType_usedInFunctionParam() async {
424+
await assertDiagnostics(r'''
425+
@deprecated
426+
extension type E(int i) { }
427+
428+
void f(E e) { }
429+
''', [
430+
lint(48, 1),
431+
]);
432+
}
433+
367434
test_deprecatedField_usedAsGetter() async {
368435
await assertDiagnostics(r'''
369436
class A {

0 commit comments

Comments
 (0)