mirror of
https://github.com/dart-lang/sdk
synced 2024-09-19 15:11:35 +00:00
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 <brianwilkerson@google.com> Commit-Queue: Phil Quitslund <pquitslund@google.com>
This commit is contained in:
parent
0f39236144
commit
69c6a3c377
|
@ -275,6 +275,18 @@ class _RecursiveVisitor extends RecursiveAstVisitor<void> {
|
|||
super.visitExtensionOverride(node);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitExtensionTypeDeclaration(ExtensionTypeDeclaration node) {
|
||||
_deprecatedVerifier
|
||||
.pushInDeprecatedValue(node.declaredElement?.hasDeprecated ?? false);
|
||||
|
||||
try {
|
||||
super.visitExtensionTypeDeclaration(node);
|
||||
} finally {
|
||||
_deprecatedVerifier.popInDeprecated();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void visitFieldDeclaration(FieldDeclaration node) {
|
||||
_deprecatedVerifier.pushInDeprecatedMetadata(node.metadata);
|
||||
|
|
|
@ -110,6 +110,16 @@ extension E on C {}
|
|||
''');
|
||||
}
|
||||
|
||||
test_deprecatedClass_usedInDeprecatedExtensionTypeRepresentation() async {
|
||||
await assertNoDiagnostics(r'''
|
||||
@deprecated
|
||||
class C {}
|
||||
|
||||
@deprecated
|
||||
extension type E(C c) { }
|
||||
''');
|
||||
}
|
||||
|
||||
test_deprecatedClass_usedInDeprecatedField_initializer() async {
|
||||
await assertNoDiagnostics(r'''
|
||||
@deprecated
|
||||
|
@ -208,6 +218,17 @@ C? x;
|
|||
''');
|
||||
}
|
||||
|
||||
test_deprecatedClass_usedInExtensionTypeRepresentation() async {
|
||||
await assertDiagnostics(r'''
|
||||
@deprecated
|
||||
class C {}
|
||||
|
||||
extension type E(C c) { }
|
||||
''', [
|
||||
lint(41, 1),
|
||||
]);
|
||||
}
|
||||
|
||||
test_deprecatedClass_usedInFieldFormalParameter() async {
|
||||
await assertDiagnostics(r'''
|
||||
@deprecated
|
||||
|
@ -364,6 +385,52 @@ var x = E(0).f();
|
|||
]);
|
||||
}
|
||||
|
||||
test_deprecatedExtensionType_usedInExtensionTypeImplements() async {
|
||||
await assertDiagnostics(r'''
|
||||
@deprecated
|
||||
extension type E(int i) { }
|
||||
|
||||
extension type F(int i) implements E { }
|
||||
''', [
|
||||
lint(76, 1),
|
||||
]);
|
||||
}
|
||||
|
||||
test_deprecatedExtensionType_usedInExtensionTypeRepresentation() async {
|
||||
await assertDiagnostics(r'''
|
||||
@deprecated
|
||||
extension type E(int i) { }
|
||||
|
||||
extension type F(E c) { }
|
||||
''', [
|
||||
lint(58, 1),
|
||||
]);
|
||||
}
|
||||
|
||||
test_deprecatedExtensionType_usedInField() async {
|
||||
await assertDiagnostics(r'''
|
||||
@deprecated
|
||||
extension type E(int i) { }
|
||||
|
||||
class C {
|
||||
E? e;
|
||||
}
|
||||
''', [
|
||||
lint(53, 1),
|
||||
]);
|
||||
}
|
||||
|
||||
test_deprecatedExtensionType_usedInFunctionParam() async {
|
||||
await assertDiagnostics(r'''
|
||||
@deprecated
|
||||
extension type E(int i) { }
|
||||
|
||||
void f(E e) { }
|
||||
''', [
|
||||
lint(48, 1),
|
||||
]);
|
||||
}
|
||||
|
||||
test_deprecatedField_usedAsGetter() async {
|
||||
await assertDiagnostics(r'''
|
||||
class A {
|
||||
|
|
Loading…
Reference in a new issue