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

Side by Side Diff: pkg/analyzer_plugin/lib/plugin/plugin.dart

Issue 2969543003: Stop creating unnecessary Source (Closed)
Patch Set: Created 3 years, 5 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 6
7 import 'package:analyzer/file_system/file_system.dart'; 7 import 'package:analyzer/file_system/file_system.dart';
8 import 'package:analyzer/file_system/physical_file_system.dart'; 8 import 'package:analyzer/file_system/physical_file_system.dart';
9 import 'package:analyzer/src/dart/analysis/driver.dart' 9 import 'package:analyzer/src/dart/analysis/driver.dart'
10 show AnalysisDriverGeneric, AnalysisDriverScheduler; 10 show AnalysisDriverGeneric, AnalysisDriverScheduler;
11 import 'package:analyzer/src/dart/analysis/file_state.dart'; 11 import 'package:analyzer/src/dart/analysis/file_state.dart';
12 import 'package:analyzer/src/generated/sdk.dart'; 12 import 'package:analyzer/src/generated/sdk.dart';
13 import 'package:analyzer/src/generated/source.dart';
14 import 'package:analyzer_plugin/channel/channel.dart'; 13 import 'package:analyzer_plugin/channel/channel.dart';
15 import 'package:analyzer_plugin/protocol/protocol.dart'; 14 import 'package:analyzer_plugin/protocol/protocol.dart';
16 import 'package:analyzer_plugin/protocol/protocol_common.dart'; 15 import 'package:analyzer_plugin/protocol/protocol_common.dart';
17 import 'package:analyzer_plugin/protocol/protocol_constants.dart'; 16 import 'package:analyzer_plugin/protocol/protocol_constants.dart';
18 import 'package:analyzer_plugin/protocol/protocol_generated.dart'; 17 import 'package:analyzer_plugin/protocol/protocol_generated.dart';
19 import 'package:analyzer_plugin/src/protocol/protocol_internal.dart'; 18 import 'package:analyzer_plugin/src/protocol/protocol_internal.dart';
20 import 'package:analyzer_plugin/src/utilities/null_string_sink.dart'; 19 import 'package:analyzer_plugin/src/utilities/null_string_sink.dart';
21 import 'package:analyzer_plugin/utilities/subscriptions/subscription_manager.dar t'; 20 import 'package:analyzer_plugin/utilities/subscriptions/subscription_manager.dar t';
22 import 'package:front_end/src/base/performace_logger.dart'; 21 import 'package:front_end/src/base/performace_logger.dart';
23 import 'package:front_end/src/incremental/byte_store.dart'; 22 import 'package:front_end/src/incremental/byte_store.dart';
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 331
333 /** 332 /**
334 * Handle an 'analysis.updateContent' request. Most subclasses should not 333 * Handle an 'analysis.updateContent' request. Most subclasses should not
335 * override this method, but should instead use the [contentCache] to access 334 * override this method, but should instead use the [contentCache] to access
336 * the current content of overlaid files. 335 * the current content of overlaid files.
337 */ 336 */
338 Future<AnalysisUpdateContentResult> handleAnalysisUpdateContent( 337 Future<AnalysisUpdateContentResult> handleAnalysisUpdateContent(
339 AnalysisUpdateContentParams parameters) async { 338 AnalysisUpdateContentParams parameters) async {
340 Map<String, Object> files = parameters.files; 339 Map<String, Object> files = parameters.files;
341 files.forEach((String filePath, Object overlay) { 340 files.forEach((String filePath, Object overlay) {
342 // We don't need to get the correct URI because only the full path is
343 // used by the contentCache.
344 Source source = resourceProvider.getFile(filePath).createSource();
345 if (overlay is AddContentOverlay) { 341 if (overlay is AddContentOverlay) {
346 fileContentOverlay[source.fullName] = overlay.content; 342 fileContentOverlay[filePath] = overlay.content;
347 } else if (overlay is ChangeContentOverlay) { 343 } else if (overlay is ChangeContentOverlay) {
348 String fileName = source.fullName; 344 String oldContents = fileContentOverlay[filePath];
349 String oldContents = fileContentOverlay[fileName];
350 String newContents; 345 String newContents;
351 if (oldContents == null) { 346 if (oldContents == null) {
352 // The server should only send a ChangeContentOverlay if there is 347 // The server should only send a ChangeContentOverlay if there is
353 // already an existing overlay for the source. 348 // already an existing overlay for the source.
354 throw new RequestFailure( 349 throw new RequestFailure(
355 RequestErrorFactory.invalidOverlayChangeNoContent()); 350 RequestErrorFactory.invalidOverlayChangeNoContent());
356 } 351 }
357 try { 352 try {
358 newContents = SourceEdit.applySequence(oldContents, overlay.edits); 353 newContents = SourceEdit.applySequence(oldContents, overlay.edits);
359 } on RangeError { 354 } on RangeError {
360 throw new RequestFailure( 355 throw new RequestFailure(
361 RequestErrorFactory.invalidOverlayChangeInvalidEdit()); 356 RequestErrorFactory.invalidOverlayChangeInvalidEdit());
362 } 357 }
363 fileContentOverlay[fileName] = newContents; 358 fileContentOverlay[filePath] = newContents;
364 } else if (overlay is RemoveContentOverlay) { 359 } else if (overlay is RemoveContentOverlay) {
365 fileContentOverlay[source.fullName] = null; 360 fileContentOverlay[filePath] = null;
366 } 361 }
367 contentChanged(filePath); 362 contentChanged(filePath);
368 }); 363 });
369 return new AnalysisUpdateContentResult(); 364 return new AnalysisUpdateContentResult();
370 } 365 }
371 366
372 /** 367 /**
373 * Handle a 'completion.getSuggestions' request. 368 * Handle a 'completion.getSuggestions' request.
374 */ 369 */
375 Future<CompletionGetSuggestionsResult> handleCompletionGetSuggestions( 370 Future<CompletionGetSuggestionsResult> handleCompletionGetSuggestions(
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 response = new Response(id, requestTime, 584 response = new Response(id, requestTime,
590 error: new RequestError( 585 error: new RequestError(
591 RequestErrorCode.PLUGIN_ERROR, exception.toString(), 586 RequestErrorCode.PLUGIN_ERROR, exception.toString(),
592 stackTrace: stackTrace.toString())); 587 stackTrace: stackTrace.toString()));
593 } 588 }
594 if (response != null) { 589 if (response != null) {
595 _channel.sendResponse(response); 590 _channel.sendResponse(response);
596 } 591 }
597 } 592 }
598 } 593 }
OLDNEW
« 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