From befbc718bb0cb8abf8893ca0826cfdfe46eb3301 Mon Sep 17 00:00:00 2001 From: FMorschel Date: Mon, 22 Sep 2025 16:16:10 -0700 Subject: [PATCH] [DAS] Adds priority tests for `CHANGE_TYPE_ANNOTATION` fix This also changes the priority of some fixes: - `ADD_AWAIT` and `ADD_AWAIT_MULTI` are now one point higher than standard - `ADD_EXPLICIT_CAST` and `ADD_EXPLICIT_CAST_MULTI` are now one point lower than standard This ensures that when these fixes are available, `ADD_AWAIT` is preferred over `CHANGE_TYPE_ANNOTATION` and lastly `ADD_EXPLICIT_CAST`. Fixes: https://github.com/dart-lang/sdk/issues/61421 Change-Id: I89cf9d9dd386773ebcb998207213cf6e636a060e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/448643 Reviewed-by: Brian Wilkerson Commit-Queue: Brian Wilkerson Reviewed-by: Samuel Rawlins Auto-Submit: Felipe Morschel --- .../services/correction/dart/add_await.dart | 3 --- .../lib/src/services/correction/fix.dart | 9 ++------- .../fix/change_type_annotation_test.dart | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_await.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_await.dart index 285a019cdbe..7e81d3bd1a5 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/add_await.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/add_await.dart @@ -37,9 +37,6 @@ class AddAwait extends ResolvedCorrectionProducer { @override FixKind get fixKind => DartFixKind.ADD_AWAIT; - @override - FixKind get multiFixKind => DartFixKind.ADD_AWAIT_MULTI; - FunctionBody? get _functionBodyIfNotAsync { var body = node.thisOrAncestorOfType(); if (body != null && !body.isAsynchronous && body.star == null) { diff --git a/pkg/analysis_server/lib/src/services/correction/fix.dart b/pkg/analysis_server/lib/src/services/correction/fix.dart index 396ac0c543e..ccdef600bd6 100644 --- a/pkg/analysis_server/lib/src/services/correction/fix.dart +++ b/pkg/analysis_server/lib/src/services/correction/fix.dart @@ -39,14 +39,9 @@ abstract final class DartFixKind { ); static const ADD_AWAIT = FixKind( 'dart.fix.add.await', - DartFixKindPriority.standard, + DartFixKindPriority.standard + 1, "Add 'await' keyword", ); - static const ADD_AWAIT_MULTI = FixKind( - 'dart.fix.add.await.multi', - DartFixKindPriority.inFile, - "Add 'await's everywhere in file", - ); static const ADD_CALL_SUPER = FixKind( 'dart.fix.add.callSuper', DartFixKindPriority.standard, @@ -149,7 +144,7 @@ abstract final class DartFixKind { ); static const ADD_EXPLICIT_CAST = FixKind( 'dart.fix.add.explicitCast', - DartFixKindPriority.standard, + DartFixKindPriority.standard - 1, 'Add cast', ); static const ADD_EXPLICIT_CAST_MULTI = FixKind( diff --git a/pkg/analysis_server/test/src/services/correction/fix/change_type_annotation_test.dart b/pkg/analysis_server/test/src/services/correction/fix/change_type_annotation_test.dart index 3eab49024db..4d163c78015 100644 --- a/pkg/analysis_server/test/src/services/correction/fix/change_type_annotation_test.dart +++ b/pkg/analysis_server/test/src/services/correction/fix/change_type_annotation_test.dart @@ -10,10 +10,29 @@ import 'fix_processor.dart'; void main() { defineReflectiveSuite(() { + defineReflectiveTests(ChangeTypeAnnotationPriorityTest); defineReflectiveTests(ChangeTypeAnnotationTest); }); } +@reflectiveTest +class ChangeTypeAnnotationPriorityTest extends FixPriorityTest { + Future test_futureType() async { + await resolveTestCode(''' +Future foo() async => 0; + +Future bar() async { + int _ = foo(); +} +'''); + await assertFixPriorityOrder([ + DartFixKind.ADD_AWAIT, + DartFixKind.CHANGE_TYPE_ANNOTATION, + DartFixKind.ADD_EXPLICIT_CAST, + ]); + } +} + @reflectiveTest class ChangeTypeAnnotationTest extends FixProcessorTest { @override