Skip to content

Commit c0df7db

Browse files
srawlinsCommit Queue
authored andcommitted
DAS: Migrate code off NodeLocator to coveringNode
Change-Id: I0bfd130436cdb765693d2b6b1bc8f4ba1bd58e2a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/423165 Commit-Queue: Samuel Rawlins <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent b166e15 commit c0df7db

File tree

12 files changed

+35
-46
lines changed

12 files changed

+35
-46
lines changed

pkg/analysis_server/lib/src/services/completion/postfix/postfix_completion.dart

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ import 'package:analyzer/dart/element/nullability_suffix.dart';
1313
import 'package:analyzer/dart/element/type.dart';
1414
import 'package:analyzer/dart/element/type_provider.dart';
1515
import 'package:analyzer/dart/element/type_system.dart';
16-
import 'package:analyzer/src/dart/ast/utilities.dart';
1716
import 'package:analyzer/src/dart/element/type.dart';
1817
import 'package:analyzer/src/generated/java_core.dart';
1918
import 'package:analyzer/src/utilities/extensions/ast.dart';
19+
import 'package:analyzer/utilities/extensions/ast.dart';
2020
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
2121
import 'package:analyzer_plugin/utilities/range_factory.dart';
2222
import 'package:collection/collection.dart';
@@ -401,7 +401,7 @@ final class PostfixCompletionProcessor {
401401
CompilationUnit get _unit => _completionContext.resolveResult.unit;
402402

403403
Future<PostfixCompletion> compute() async {
404-
_node = _selectedNode();
404+
_node = _unit.nodeCovering(offset: _selectionOffset);
405405
if (_node == null) {
406406
return _noCompletion;
407407
}
@@ -568,7 +568,7 @@ final class PostfixCompletionProcessor {
568568
}
569569

570570
Future<bool> isApplicable() async {
571-
_node = _selectedNode();
571+
_node = _unit.nodeCovering(offset: _selectionOffset);
572572
if (_node == null) {
573573
return false;
574574
}
@@ -658,9 +658,6 @@ final class PostfixCompletionProcessor {
658658
return expr;
659659
}
660660

661-
AstNode? _selectedNode({int? at}) =>
662-
NodeLocator(at ?? _selectionOffset).searchWithin(_unit);
663-
664661
void _setCompletionFromBuilder(
665662
ChangeBuilder builder,
666663
PostfixCompletionKind kind,

pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ import 'package:analyzer/error/error.dart';
2020
import 'package:analyzer/source/line_info.dart';
2121
import 'package:analyzer/source/source.dart';
2222
import 'package:analyzer/source/source_range.dart';
23-
import 'package:analyzer/src/dart/ast/utilities.dart';
2423
import 'package:analyzer/src/dart/error/syntactic_errors.dart';
2524
import 'package:analyzer/src/error/codes.dart';
2625
import 'package:analyzer/src/generated/java_core.dart';
26+
import 'package:analyzer/utilities/extensions/ast.dart';
2727
import 'package:analyzer_plugin/utilities/range_factory.dart';
2828
import 'package:collection/collection.dart';
2929

@@ -922,8 +922,7 @@ class StatementCompletionProcessor {
922922
var argList =
923923
_selectedNode(
924924
at: selectionOffset,
925-
)?.thisOrAncestorOfType<ArgumentList>();
926-
argList ??=
925+
)?.thisOrAncestorOfType<ArgumentList>() ??
927926
_selectedNode(
928927
at: parenError.offset,
929928
)?.thisOrAncestorOfType<ArgumentList>();
@@ -1273,7 +1272,7 @@ class StatementCompletionProcessor {
12731272
}
12741273

12751274
AstNode? _selectedNode({int? at}) =>
1276-
NodeLocator(at ?? selectionOffset).searchWithin(unit);
1275+
unit.nodeCovering(offset: at ?? selectionOffset);
12771276

12781277
void _setCompletion(StatementCompletionKind kind) {
12791278
assert(exitPosition != null);

pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import 'package:analyzer/dart/ast/ast.dart';
99
import 'package:analyzer/dart/element/element2.dart';
1010
import 'package:analyzer/dart/element/type.dart';
1111
import 'package:analyzer/error/error.dart';
12-
import 'package:analyzer/src/dart/ast/utilities.dart';
1312
import 'package:analyzer/src/utilities/extensions/flutter.dart';
13+
import 'package:analyzer/utilities/extensions/ast.dart';
1414
import 'package:analyzer_plugin/utilities/assist/assist.dart';
1515
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
1616
import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
@@ -253,10 +253,10 @@ class AddDiagnosticPropertyReference extends ResolvedCorrectionProducer {
253253

254254
// Compute the information for all the properties to be added.
255255
for (var error in propertyErrors) {
256-
var selectionOffset = error.offset;
257-
var selectionEnd = selectionOffset + error.length;
258-
var locator = NodeLocator(selectionOffset, selectionEnd);
259-
var node = locator.searchWithin(unitResult.unit);
256+
var node = unitResult.unit.nodeCovering(
257+
offset: error.offset,
258+
length: error.length,
259+
);
260260
if (node == null) {
261261
continue;
262262
}

pkg/analysis_server/lib/src/services/correction/dart/make_variable_not_final.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'package:analysis_server/src/services/correction/fix.dart';
77
import 'package:analysis_server_plugin/edit/dart/correction_producer.dart';
88
import 'package:analyzer/dart/ast/ast.dart';
99
import 'package:analyzer/dart/element/element2.dart';
10-
import 'package:analyzer/src/dart/ast/utilities.dart';
10+
import 'package:analyzer/utilities/extensions/ast.dart';
1111
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
1212
import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
1313
import 'package:analyzer_plugin/utilities/range_factory.dart';
@@ -50,7 +50,7 @@ class MakeVariableNotFinal extends ResolvedCorrectionProducer {
5050
return;
5151
}
5252

53-
var declaration = NodeLocator(nameOffset).searchWithin(unit);
53+
var declaration = unit.nodeCovering(offset: nameOffset);
5454
var declarationList = declaration?.parent;
5555

5656
if (declaration is VariableDeclaration &&

pkg/analysis_server/lib/src/services/refactoring/legacy/convert_method_to_getter.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import 'package:analyzer/dart/ast/ast.dart';
1313
import 'package:analyzer/dart/element/element2.dart';
1414
import 'package:analyzer/dart/element/type.dart';
1515
import 'package:analyzer/src/dart/analysis/session_helper.dart';
16-
import 'package:analyzer/src/dart/ast/utilities.dart';
16+
import 'package:analyzer/utilities/extensions/ast.dart';
1717
import 'package:analyzer_plugin/utilities/range_factory.dart';
1818

1919
/// [ConvertMethodToGetterRefactoring] implementation.
@@ -149,7 +149,7 @@ class ConvertMethodToGetterRefactoringImpl extends RefactoringImpl
149149
);
150150
var refUnit = resolvedUnit?.unit;
151151
if (refUnit == null) continue;
152-
var refNode = NodeLocator(refRange.offset).searchWithin(refUnit);
152+
var refNode = refUnit.nodeCovering(offset: refRange.offset);
153153
var invocation = refNode?.thisOrAncestorOfType<MethodInvocation>();
154154

155155
// we need invocation

pkg/analysis_server/lib/src/services/refactoring/legacy/extract_local.dart

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ import 'package:analyzer/dart/ast/visitor.dart';
2323
import 'package:analyzer/dart/element/element2.dart';
2424
import 'package:analyzer/dart/element/type.dart';
2525
import 'package:analyzer/source/source_range.dart';
26-
import 'package:analyzer/src/dart/ast/utilities.dart';
2726
import 'package:analyzer/src/generated/java_core.dart';
27+
import 'package:analyzer/utilities/extensions/ast.dart';
2828
import 'package:analyzer_plugin/utilities/range_factory.dart';
2929

3030
const String _TOKEN_SEPARATOR = '\uFFFF';
@@ -285,11 +285,10 @@ class ExtractLocalRefactoringImpl extends RefactoringImpl
285285
selectionRange = SourceRange(offset, end - offset);
286286
}
287287

288-
// get covering node
289-
var coveringNode = NodeLocator(
290-
selectionRange.offset,
291-
selectionRange.end,
292-
).searchWithin(unit);
288+
var coveringNode = unit.nodeCovering(
289+
offset: selectionRange.offset,
290+
length: selectionRange.length,
291+
);
293292

294293
// We need an enclosing function.
295294
// If it has a block body, we can add a new variable declaration statement
@@ -480,7 +479,7 @@ class ExtractLocalRefactoringImpl extends RefactoringImpl
480479
List<AstNode> _findNodes(List<SourceRange> ranges) {
481480
var nodes = <AstNode>[];
482481
for (var range in ranges) {
483-
var node = NodeLocator(range.offset).searchWithin(unit)!;
482+
var node = unit.nodeCovering(offset: range.offset)!;
484483
nodes.add(node);
485484
}
486485
return nodes;

pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import 'package:analyzer/src/dart/resolver/exit_detector.dart';
3535
import 'package:analyzer/src/generated/java_core.dart';
3636
import 'package:analyzer/src/utilities/extensions/ast.dart';
3737
import 'package:analyzer/src/utilities/extensions/string.dart';
38+
import 'package:analyzer/utilities/extensions/ast.dart';
3839
import 'package:analyzer_plugin/utilities/range_factory.dart';
3940
import 'package:meta/meta.dart';
4041

@@ -314,7 +315,7 @@ final class ExtractMethodRefactoringImpl extends RefactoringImpl
314315

315316
@override
316317
String get refactoringName {
317-
var node = NodeLocator(_selectionOffset).searchWithin(_resolveResult.unit);
318+
var node = _resolveResult.unit.nodeCovering(offset: _selectionOffset);
318319
if (node != null && node.thisOrAncestorOfType<ClassDeclaration>() != null) {
319320
return 'Extract Method';
320321
}

pkg/analysis_server/lib/src/services/refactoring/legacy/extract_widget.dart

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ import 'package:analyzer/dart/element/type.dart';
1919
import 'package:analyzer/source/source_range.dart';
2020
import 'package:analyzer/src/dart/analysis/session_helper.dart';
2121
import 'package:analyzer/src/dart/ast/extensions.dart';
22-
import 'package:analyzer/src/dart/ast/utilities.dart';
2322
import 'package:analyzer/src/generated/java_core.dart';
2423
import 'package:analyzer/src/utilities/extensions/flutter.dart';
24+
import 'package:analyzer/utilities/extensions/ast.dart';
2525
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
2626
import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
2727
import 'package:analyzer_plugin/utilities/range_factory.dart';
@@ -177,10 +177,7 @@ class ExtractWidgetRefactoringImpl extends RefactoringImpl
177177

178178
/// Checks if [offset] is a widget creation expression that can be extracted.
179179
RefactoringStatus _checkSelection() {
180-
var node = NodeLocator(
181-
offset,
182-
offset + length,
183-
).searchWithin(resolveResult.unit);
180+
var node = resolveResult.unit.nodeCovering(offset: offset, length: length);
184181

185182
// Treat single ReturnStatement as its expression.
186183
if (node is ReturnStatement) {

pkg/analysis_server/lib/src/services/refactoring/legacy/inline_local.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import 'package:analyzer/dart/ast/ast.dart';
1414
import 'package:analyzer/dart/ast/token.dart';
1515
import 'package:analyzer/dart/element/element2.dart';
1616
import 'package:analyzer/src/dart/analysis/session_helper.dart';
17-
import 'package:analyzer/src/dart/ast/utilities.dart';
1817
import 'package:analyzer/src/generated/java_core.dart';
18+
import 'package:analyzer/utilities/extensions/ast.dart';
1919
import 'package:analyzer_plugin/utilities/range_factory.dart';
2020

2121
/// [InlineLocalRefactoring] implementation.
@@ -52,9 +52,8 @@ class InlineLocalRefactoringImpl extends RefactoringImpl
5252

5353
@override
5454
Future<RefactoringStatus> checkInitialConditions() async {
55-
// prepare variable
5655
Element2? element;
57-
var offsetNode = NodeLocator(offset).searchWithin(resolveResult.unit);
56+
var offsetNode = resolveResult.unit.nodeCovering(offset: offset);
5857
if (offsetNode is SimpleIdentifier) {
5958
element = offsetNode.element;
6059
} else if (offsetNode is VariableDeclaration) {
@@ -180,7 +179,7 @@ class InlineLocalRefactoringImpl extends RefactoringImpl
180179
/// Checks if [offset] is a variable that can be inlined.
181180
RefactoringStatus _checkOffset() {
182181
Element2? element;
183-
var offsetNode = NodeLocator(offset).searchWithin(resolveResult.unit);
182+
var offsetNode = resolveResult.unit.nodeCovering(offset: offset);
184183
if (offsetNode is SimpleIdentifier) {
185184
element = offsetNode.element;
186185
} else if (offsetNode is VariableDeclaration) {

pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import 'package:analyzer/dart/element/element2.dart';
2222
import 'package:analyzer/source/source_range.dart';
2323
import 'package:analyzer/src/dart/analysis/session_helper.dart';
2424
import 'package:analyzer/src/dart/ast/extensions.dart';
25-
import 'package:analyzer/src/dart/ast/utilities.dart';
25+
import 'package:analyzer/utilities/extensions/ast.dart';
2626
import 'package:analyzer_plugin/src/utilities/extensions/resolved_unit_result.dart';
2727
import 'package:analyzer_plugin/utilities/range_factory.dart';
2828

@@ -356,7 +356,7 @@ class InlineMethodRefactoringImpl extends RefactoringImpl
356356
'Method declaration or reference must be selected to activate this refactoring.',
357357
);
358358

359-
var selectedNode = NodeLocator(offset).searchWithin(resolveResult.unit);
359+
var selectedNode = resolveResult.unit.nodeCovering(offset: offset);
360360
Element2? element;
361361

362362
if (selectedNode is FunctionDeclaration) {
@@ -412,7 +412,7 @@ class InlineMethodRefactoringImpl extends RefactoringImpl
412412
);
413413

414414
// prepare selected SimpleIdentifier
415-
var selectedNode = NodeLocator(offset).searchWithin(resolveResult.unit);
415+
var selectedNode = resolveResult.unit.nodeCovering(offset: offset);
416416
Element2? element;
417417
if (selectedNode is FunctionDeclaration) {
418418
element = selectedNode.declaredFragment?.element;

0 commit comments

Comments
 (0)