Skip to content

Commit 1335dfc

Browse files
srawlinsCommit Queue
authored andcommitted
DAS: Consolidate containsAny helper
Change-Id: I6994aa116c9740fc83ddca9f501ca8cb7d1e0952 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/413800 Commit-Queue: Brian Wilkerson <[email protected]> Auto-Submit: Samuel Rawlins <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent a296f24 commit 1335dfc

File tree

3 files changed

+19
-31
lines changed

3 files changed

+19
-31
lines changed

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'dart:collection';
77
import 'package:analysis_server/src/services/correction/fix.dart';
88
import 'package:analysis_server/src/services/correction/namespace.dart';
99
import 'package:analysis_server/src/utilities/extensions/element.dart';
10+
import 'package:analysis_server/src/utilities/extensions/iterable.dart';
1011
import 'package:analysis_server_plugin/edit/dart/correction_producer.dart';
1112
import 'package:analysis_server_plugin/edit/fix/dart_fix_context.dart';
1213
import 'package:analysis_server_plugin/src/correction/fix_generators.dart';
@@ -1228,9 +1229,3 @@ extension on SimpleIdentifier {
12281229
return null;
12291230
}
12301231
}
1231-
1232-
extension<T> on Iterable<T> {
1233-
bool containsAny(Iterable<T> values) {
1234-
return values.any((v) => contains(v));
1235-
}
1236-
}

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

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:analysis_server/src/protocol_server.dart';
66
import 'package:analysis_server/src/services/correction/selection_analyzer.dart';
77
import 'package:analysis_server/src/services/correction/status.dart';
88
import 'package:analysis_server/src/services/correction/util.dart';
9+
import 'package:analysis_server/src/utilities/extensions/iterable.dart';
910
import 'package:analyzer/dart/analysis/features.dart';
1011
import 'package:analyzer/dart/analysis/results.dart';
1112
import 'package:analyzer/dart/ast/ast.dart';
@@ -95,8 +96,7 @@ class StatementAnalyzer extends SelectionAnalyzer {
9596
@override
9697
void visitDoStatement(DoStatement node) {
9798
super.visitDoStatement(node);
98-
var selectedNodes = this.selectedNodes;
99-
if (_contains(selectedNodes, node.body)) {
99+
if (selectedNodes.contains(node.body)) {
100100
invalidSelection(
101101
"Operation not applicable to a 'do' statement's body and expression.",
102102
);
@@ -111,17 +111,17 @@ class StatementAnalyzer extends SelectionAnalyzer {
111111
var selectedNodes = this.selectedNodes;
112112
bool containsInit;
113113
if (forLoopParts is ForPartsWithExpression) {
114-
containsInit = _contains(selectedNodes, forLoopParts.initialization);
114+
containsInit = selectedNodes.contains(forLoopParts.initialization);
115115
} else if (forLoopParts is ForPartsWithDeclarations) {
116-
containsInit = _contains(selectedNodes, forLoopParts.variables);
116+
containsInit = selectedNodes.contains(forLoopParts.variables);
117117
} else if (forLoopParts is ForPartsWithPattern) {
118-
containsInit = _contains(selectedNodes, forLoopParts.variables);
118+
containsInit = selectedNodes.contains(forLoopParts.variables);
119119
} else {
120120
throw StateError('Unrecognized for loop parts');
121121
}
122-
var containsCondition = _contains(selectedNodes, forLoopParts.condition);
123-
var containsUpdaters = _containsAny(selectedNodes, forLoopParts.updaters);
124-
var containsBody = _contains(selectedNodes, node.body);
122+
var containsCondition = selectedNodes.contains(forLoopParts.condition);
123+
var containsUpdaters = selectedNodes.containsAny(forLoopParts.updaters);
124+
var containsBody = selectedNodes.contains(node.body);
125125
if (containsInit && containsCondition) {
126126
invalidSelection(
127127
"Operation not applicable to a 'for' statement's initializer and condition.",
@@ -181,9 +181,8 @@ class StatementAnalyzer extends SelectionAnalyzer {
181181
@override
182182
void visitWhileStatement(WhileStatement node) {
183183
super.visitWhileStatement(node);
184-
var selectedNodes = this.selectedNodes;
185-
if (_contains(selectedNodes, node.condition) &&
186-
_contains(selectedNodes, node.body)) {
184+
if (selectedNodes.contains(node.condition) &&
185+
selectedNodes.contains(node.body)) {
187186
invalidSelection(
188187
"Operation not applicable to a while statement's expression and body.",
189188
);
@@ -231,20 +230,6 @@ class StatementAnalyzer extends SelectionAnalyzer {
231230
var rangeText = fullText.substring(range.offset, range.end);
232231
return _getTokens(rangeText, resolveResult.unit.featureSet).isNotEmpty;
233232
}
234-
235-
/// Returns `true` if [nodes] contains [node].
236-
static bool _contains(List<AstNode> nodes, AstNode? node) =>
237-
nodes.contains(node);
238-
239-
/// Returns `true` if [nodes] contains one of the [otherNodes].
240-
static bool _containsAny(List<AstNode> nodes, List<AstNode> otherNodes) {
241-
for (var otherNode in otherNodes) {
242-
if (nodes.contains(otherNode)) {
243-
return true;
244-
}
245-
}
246-
return false;
247-
}
248233
}
249234

250235
class _SourceMock implements Source {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
extension IterableExtension<T> on Iterable<T> {
6+
/// Whether this Iterable contains any of [values].
7+
bool containsAny(Iterable<T> values) => values.any((v) => contains(v));
8+
}

0 commit comments

Comments
 (0)