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

Side by Side Diff: pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart

Issue 2551023005: Prepare for decoupling analyzer ASTs from element model. (Closed)
Patch Set: Address review comments Created 4 years 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
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 library services.completion.dart.manager; 5 library services.completion.dart.manager;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/plugin/protocol/protocol.dart'; 9 import 'package:analysis_server/plugin/protocol/protocol.dart';
10 import 'package:analysis_server/src/provisional/completion/completion_core.dart' 10 import 'package:analysis_server/src/provisional/completion/completion_core.dart'
11 show CompletionContributor, CompletionRequest; 11 show CompletionContributor, CompletionRequest;
12 import 'package:analysis_server/src/provisional/completion/dart/completion_dart. dart'; 12 import 'package:analysis_server/src/provisional/completion/dart/completion_dart. dart';
13 import 'package:analysis_server/src/provisional/completion/dart/completion_plugi n.dart'; 13 import 'package:analysis_server/src/provisional/completion/dart/completion_plugi n.dart';
14 import 'package:analysis_server/src/provisional/completion/dart/completion_targe t.dart'; 14 import 'package:analysis_server/src/provisional/completion/dart/completion_targe t.dart';
15 import 'package:analysis_server/src/services/completion/completion_core.dart'; 15 import 'package:analysis_server/src/services/completion/completion_core.dart';
16 import 'package:analysis_server/src/services/completion/completion_performance.d art'; 16 import 'package:analysis_server/src/services/completion/completion_performance.d art';
17 import 'package:analysis_server/src/services/completion/dart/common_usage_sorter .dart'; 17 import 'package:analysis_server/src/services/completion/dart/common_usage_sorter .dart';
18 import 'package:analysis_server/src/services/completion/dart/contribution_sorter .dart'; 18 import 'package:analysis_server/src/services/completion/dart/contribution_sorter .dart';
19 import 'package:analysis_server/src/services/completion/dart/optype.dart'; 19 import 'package:analysis_server/src/services/completion/dart/optype.dart';
20 import 'package:analysis_server/src/services/search/search_engine.dart'; 20 import 'package:analysis_server/src/services/search/search_engine.dart';
21 import 'package:analyzer/dart/ast/ast.dart'; 21 import 'package:analyzer/dart/ast/ast.dart';
22 import 'package:analyzer/dart/ast/standard_resolution_map.dart';
22 import 'package:analyzer/dart/ast/standard_ast_factory.dart'; 23 import 'package:analyzer/dart/ast/standard_ast_factory.dart';
23 import 'package:analyzer/dart/ast/token.dart'; 24 import 'package:analyzer/dart/ast/token.dart';
24 import 'package:analyzer/dart/element/element.dart'; 25 import 'package:analyzer/dart/element/element.dart';
25 import 'package:analyzer/dart/element/type.dart'; 26 import 'package:analyzer/dart/element/type.dart';
26 import 'package:analyzer/exception/exception.dart'; 27 import 'package:analyzer/exception/exception.dart';
27 import 'package:analyzer/file_system/file_system.dart'; 28 import 'package:analyzer/file_system/file_system.dart';
28 import 'package:analyzer/src/context/context.dart' show AnalysisFutureHelper; 29 import 'package:analyzer/src/context/context.dart' show AnalysisFutureHelper;
29 import 'package:analyzer/src/dart/analysis/driver.dart'; 30 import 'package:analyzer/src/dart/analysis/driver.dart';
30 import 'package:analyzer/src/dart/ast/token.dart'; 31 import 'package:analyzer/src/dart/ast/token.dart';
31 import 'package:analyzer/src/generated/engine.dart' hide AnalysisResult; 32 import 'package:analyzer/src/generated/engine.dart' hide AnalysisResult;
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 this.offset, 173 this.offset,
173 CompilationUnit unit, 174 CompilationUnit unit,
174 this._originalRequest, 175 this._originalRequest,
175 this.performance) { 176 this.performance) {
176 _updateTargets(unit); 177 _updateTargets(unit);
177 } 178 }
178 179
179 @override 180 @override
180 LibraryElement get coreLib { 181 LibraryElement get coreLib {
181 if (result != null) { 182 if (result != null) {
182 AnalysisContext context = result.unit.element.context; 183 AnalysisContext context =
184 resolutionMap.elementForCompilationUnit(result.unit).context;
183 _coreLib = context.typeProvider.objectType.element.library; 185 _coreLib = context.typeProvider.objectType.element.library;
184 } else { 186 } else {
185 Source coreUri = sourceFactory.forUri('dart:core'); 187 Source coreUri = sourceFactory.forUri('dart:core');
186 _coreLib = context.computeLibraryElement(coreUri); 188 _coreLib = context.computeLibraryElement(coreUri);
187 } 189 }
188 return _coreLib; 190 return _coreLib;
189 } 191 }
190 192
191 @override 193 @override
192 bool get includeIdentifiers { 194 bool get includeIdentifiers {
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 return _resolvedImports; 320 return _resolvedImports;
319 } 321 }
320 322
321 @override 323 @override
322 Future<List<CompilationUnitElement>> resolveUnits() async { 324 Future<List<CompilationUnitElement>> resolveUnits() async {
323 checkAborted(); 325 checkAborted();
324 if (_resolvedUnits != null) { 326 if (_resolvedUnits != null) {
325 return _resolvedUnits; 327 return _resolvedUnits;
326 } 328 }
327 if (result != null) { 329 if (result != null) {
328 _resolvedUnits = result.unit.element.library.units; 330 _resolvedUnits =
331 resolutionMap.elementForCompilationUnit(result.unit).library.units;
329 return _resolvedUnits; 332 return _resolvedUnits;
330 } 333 }
331 LibraryElement libElem = libraryElement; 334 LibraryElement libElem = libraryElement;
332 if (libElem == null) { 335 if (libElem == null) {
333 return null; 336 return null;
334 } 337 }
335 _resolvedUnits = <CompilationUnitElement>[]; 338 _resolvedUnits = <CompilationUnitElement>[];
336 for (CompilationUnitElement unresolvedUnit in libElem.units) { 339 for (CompilationUnitElement unresolvedUnit in libElem.units) {
337 CompilationUnit unit = await _computeAsync( 340 CompilationUnit unit = await _computeAsync(
338 this, 341 this,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 CompletionPerformance performance = 392 CompletionPerformance performance =
390 (request as CompletionRequestImpl).performance; 393 (request as CompletionRequestImpl).performance;
391 const BUILD_REQUEST_TAG = 'build DartCompletionRequest'; 394 const BUILD_REQUEST_TAG = 'build DartCompletionRequest';
392 performance.logStartTime(BUILD_REQUEST_TAG); 395 performance.logStartTime(BUILD_REQUEST_TAG);
393 396
394 Source libSource; 397 Source libSource;
395 CompilationUnit unit; 398 CompilationUnit unit;
396 if (request.context == null) { 399 if (request.context == null) {
397 unit = request.result.unit; 400 unit = request.result.unit;
398 // TODO(scheglov) support for parts 401 // TODO(scheglov) support for parts
399 libSource = unit.element.source; 402 libSource = resolutionMap.elementForCompilationUnit(unit).source;
400 } else { 403 } else {
401 Source source = request.source; 404 Source source = request.source;
402 AnalysisContext context = request.context; 405 AnalysisContext context = request.context;
403 406
404 const PARSE_TAG = 'parse unit'; 407 const PARSE_TAG = 'parse unit';
405 performance.logStartTime(PARSE_TAG); 408 performance.logStartTime(PARSE_TAG);
406 unit = request.context.computeResult(source, PARSED_UNIT); 409 unit = request.context.computeResult(source, PARSED_UNIT);
407 performance.logElapseTime(PARSE_TAG); 410 performance.logElapseTime(PARSE_TAG);
408 411
409 if (unit.directives.any((d) => d is PartOfDirective)) { 412 if (unit.directives.any((d) => d is PartOfDirective)) {
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 if (start <= requestOffset && requestOffset <= end) { 531 if (start <= requestOffset && requestOffset <= end) {
529 // Replacement range for import URI 532 // Replacement range for import URI
530 return new ReplacementRange(start, end - start); 533 return new ReplacementRange(start, end - start);
531 } 534 }
532 } 535 }
533 } 536 }
534 } 537 }
535 return new ReplacementRange(requestOffset, 0); 538 return new ReplacementRange(requestOffset, 0);
536 } 539 }
537 } 540 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698