analyzer: Check deprecated member use on DotShorthandInvocation Change-Id: Ie8cdb4f3b063cb8a5fdd2486ced421d481339f31 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/451662 Reviewed-by: Kallen Tu <kallentu@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/analyzer/lib/src/error/best_practices_verifier.dart b/pkg/analyzer/lib/src/error/best_practices_verifier.dart index 169fc14..a71825c5 100644 --- a/pkg/analyzer/lib/src/error/best_practices_verifier.dart +++ b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
@@ -374,8 +374,9 @@ @override void visitDotShorthandInvocation(DotShorthandInvocation node) { _deprecatedFunctionalityVerifier.dotShorthandInvocation(node); - // TODO(srawlins): I imagine we need to check with - // `_deprecatedMemberUseVerifier` here... + for (var v in _elementUsageFrontierDetectors) { + v.dotShorthandInvocation(node); + } super.visitDotShorthandInvocation(node); }
diff --git a/pkg/analyzer/lib/src/error/element_usage_detector.dart b/pkg/analyzer/lib/src/error/element_usage_detector.dart index 2017369..90a90f5 100644 --- a/pkg/analyzer/lib/src/error/element_usage_detector.dart +++ b/pkg/analyzer/lib/src/error/element_usage_detector.dart
@@ -131,6 +131,10 @@ _invocationArguments(node.constructorName.element, node.argumentList); } + void dotShorthandInvocation(DotShorthandInvocation node) { + _invocationArguments(node.memberName.element, node.argumentList); + } + void exportDirective(ExportDirective node) { checkUsage(node.libraryExport?.exportedLibrary, node); }
diff --git a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart index f591535..39f4f41 100644 --- a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart +++ b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
@@ -13,10 +13,10 @@ main() { defineReflectiveSuite(() { - defineReflectiveTests(DeprecatedMemberUse_PackageConfigWorkspaceTest); defineReflectiveTests(DeprecatedMemberUse_BlazeWorkspaceTest); defineReflectiveTests(DeprecatedMemberUse_GnWorkspaceTest); defineReflectiveTests(DeprecatedMemberUse_PackageBuildWorkspaceTest); + defineReflectiveTests(DeprecatedMemberUse_PackageConfigWorkspaceTest); }); } @@ -551,6 +551,29 @@ ); } + test_dotShorthandInvocation_deprecatedMethod() async { + newFile('$workspaceRootPath/aaa/lib/a.dart', r''' +class A { + @deprecated + static A m() => A(); +} +'''); + + await assertErrorsInCode( + r''' +import 'package:aaa/a.dart'; + +void f() { + A a = .m(); +} +''', + [ + error(WarningCode.unusedLocalVariable, 45, 1), + error(HintCode.deprecatedMemberUse, 50, 1), + ], + ); + } + test_export() async { newFile('$workspaceRootPath/aaa/lib/a.dart', r''' @deprecated