Do not report deprecated member use inside deprecated parameters
Fixes https://github.com/dart-lang/sdk/issues/51664 Change-Id: I7f7e9f56c27e81f7d60c3a66e0727b433d854b8b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291700 Reviewed-by: Phil Quitslund <pquitslund@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Samuel Rawlins <srawlins@google.com>
This commit is contained in:
committed by
Commit Queue
parent
2ff94f8882
commit
3fe440b1e1
@@ -299,7 +299,14 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
|
||||
CompileTimeErrorCode.OBSOLETE_COLON_FOR_DEFAULT_VALUE, separator);
|
||||
}
|
||||
}
|
||||
super.visitDefaultFormalParameter(node);
|
||||
_deprecatedVerifier
|
||||
.pushInDeprecatedValue(node.declaredElement!.hasDeprecated);
|
||||
|
||||
try {
|
||||
super.visitDefaultFormalParameter(node);
|
||||
} finally {
|
||||
_deprecatedVerifier.popInDeprecated();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -64,6 +64,20 @@ int g(Object s) =>
|
||||
]);
|
||||
}
|
||||
|
||||
test_inDeprecatedDefaultFormalParameter() async {
|
||||
await assertNoErrorsInCode2(
|
||||
externalCode: r'''
|
||||
@deprecated
|
||||
class C {
|
||||
const C();
|
||||
}
|
||||
''',
|
||||
code: r'''
|
||||
f({@deprecated C? c = const C()}) {}
|
||||
''',
|
||||
);
|
||||
}
|
||||
|
||||
test_inDeprecatedEnum() async {
|
||||
await assertNoErrorsInCode2(
|
||||
externalCode: r'''
|
||||
@@ -83,6 +97,62 @@ enum E {
|
||||
);
|
||||
}
|
||||
|
||||
test_inDeprecatedFieldFormalParameter() async {
|
||||
await assertNoErrorsInCode2(
|
||||
externalCode: r'''
|
||||
@deprecated
|
||||
class C {}
|
||||
''',
|
||||
code: r'''
|
||||
class A {
|
||||
Object? o;
|
||||
A({@deprecated C? this.o});
|
||||
}
|
||||
''',
|
||||
);
|
||||
}
|
||||
|
||||
test_inDeprecatedFunctionTypedFormalParameter() async {
|
||||
await assertNoErrorsInCode2(
|
||||
externalCode: r'''
|
||||
@deprecated
|
||||
class C {}
|
||||
''',
|
||||
code: r'''
|
||||
f({@deprecated C? callback()?}) {}
|
||||
''',
|
||||
);
|
||||
}
|
||||
|
||||
test_inDeprecatedSimpleFormalParameter() async {
|
||||
await assertNoErrorsInCode2(
|
||||
externalCode: r'''
|
||||
@deprecated
|
||||
class C {}
|
||||
''',
|
||||
code: r'''
|
||||
f({@deprecated C? c}) {}
|
||||
''',
|
||||
);
|
||||
}
|
||||
|
||||
test_inDeprecatedSuperFormalParameter() async {
|
||||
await assertNoErrorsInCode2(
|
||||
externalCode: r'''
|
||||
@deprecated
|
||||
class C {}
|
||||
''',
|
||||
code: r'''
|
||||
class A {
|
||||
A({Object? o});
|
||||
}
|
||||
class B extends A {
|
||||
B({@deprecated C? super.o});
|
||||
}
|
||||
''',
|
||||
);
|
||||
}
|
||||
|
||||
test_inEnum() async {
|
||||
await assertErrorsInCode2(
|
||||
externalCode: r'''
|
||||
|
||||
Reference in New Issue
Block a user