Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(301)

Unified Diff: pkg/analysis_server/lib/src/services/search/search_engine_internal2.dart

Issue 2818163003: Make copy of the drivers list in SearchEngineImpl2 to avoid ConcurrentModificationError. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/lib/src/services/search/search_engine_internal2.dart
diff --git a/pkg/analysis_server/lib/src/services/search/search_engine_internal2.dart b/pkg/analysis_server/lib/src/services/search/search_engine_internal2.dart
index d9088a9d9d3c2aa98ca52cdd8facd8c42f0c6ebe..6f1336fd2b5c93a5422935875c8dc0bb2f20fd1e 100644
--- a/pkg/analysis_server/lib/src/services/search/search_engine_internal2.dart
+++ b/pkg/analysis_server/lib/src/services/search/search_engine_internal2.dart
@@ -39,7 +39,8 @@ class SearchEngineImpl2 implements SearchEngine {
@override
Future<List<SearchMatch>> searchMemberDeclarations(String name) async {
List<SearchMatch> allDeclarations = [];
- for (AnalysisDriver driver in _drivers) {
+ List<AnalysisDriver> drivers = _drivers.toList();
+ for (AnalysisDriver driver in drivers) {
List<Element> elements = await driver.search.classMembers(name);
allDeclarations.addAll(elements.map(_SearchMatch.forElement));
}
@@ -49,7 +50,8 @@ class SearchEngineImpl2 implements SearchEngine {
@override
Future<List<SearchMatch>> searchMemberReferences(String name) async {
List<SearchResult> allResults = [];
- for (AnalysisDriver driver in _drivers) {
+ List<AnalysisDriver> drivers = _drivers.toList();
+ for (AnalysisDriver driver in drivers) {
List<SearchResult> results =
await driver.search.unresolvedMemberReferences(name);
allResults.addAll(results);
@@ -60,7 +62,8 @@ class SearchEngineImpl2 implements SearchEngine {
@override
Future<List<SearchMatch>> searchReferences(Element element) async {
List<SearchResult> allResults = [];
- for (AnalysisDriver driver in _drivers) {
+ List<AnalysisDriver> drivers = _drivers.toList();
+ for (AnalysisDriver driver in drivers) {
List<SearchResult> results = await driver.search.references(element);
allResults.addAll(results);
}
@@ -77,7 +80,8 @@ class SearchEngineImpl2 implements SearchEngine {
Future<List<SearchMatch>> searchTopLevelDeclarations(String pattern) async {
List<SearchMatch> allDeclarations = [];
RegExp regExp = new RegExp(pattern);
- for (AnalysisDriver driver in _drivers) {
+ List<AnalysisDriver> drivers = _drivers.toList();
+ for (AnalysisDriver driver in drivers) {
List<Element> elements = await driver.search.topLevelElements(regExp);
allDeclarations.addAll(elements.map(_SearchMatch.forElement));
}
@@ -86,7 +90,8 @@ class SearchEngineImpl2 implements SearchEngine {
Future<List<SearchResult>> _searchDirectSubtypes(ClassElement type) async {
List<SearchResult> allResults = [];
- for (AnalysisDriver driver in _drivers) {
+ List<AnalysisDriver> drivers = _drivers.toList();
+ for (AnalysisDriver driver in drivers) {
List<SearchResult> results = await driver.search.subTypes(type);
allResults.addAll(results);
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698