| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 analysis.server; | 5 library analysis.server; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:collection'; | 8 import 'dart:collection'; |
| 9 import 'dart:core' hide Resource; | 9 import 'dart:core' hide Resource; |
| 10 import 'dart:math' show max; | 10 import 'dart:math' show max; |
| 11 | 11 |
| 12 import 'package:analysis_server/plugin/protocol/protocol.dart' | 12 import 'package:analysis_server/plugin/protocol/protocol.dart' |
| 13 hide AnalysisOptions, Element; | 13 hide AnalysisOptions, Element; |
| 14 import 'package:analysis_server/src/analysis_logger.dart'; | 14 import 'package:analysis_server/src/analysis_logger.dart'; |
| 15 import 'package:analysis_server/src/channel/channel.dart'; | 15 import 'package:analysis_server/src/channel/channel.dart'; |
| 16 import 'package:analysis_server/src/context_manager.dart'; | 16 import 'package:analysis_server/src/context_manager.dart'; |
| 17 import 'package:analysis_server/src/operation/operation.dart'; | 17 import 'package:analysis_server/src/operation/operation.dart'; |
| 18 import 'package:analysis_server/src/operation/operation_analysis.dart'; | 18 import 'package:analysis_server/src/operation/operation_analysis.dart'; |
| 19 import 'package:analysis_server/src/operation/operation_queue.dart'; | 19 import 'package:analysis_server/src/operation/operation_queue.dart'; |
| 20 import 'package:analysis_server/src/plugin/server_plugin.dart'; | 20 import 'package:analysis_server/src/plugin/server_plugin.dart'; |
| 21 import 'package:analysis_server/src/services/correction/namespace.dart'; | 21 import 'package:analysis_server/src/services/correction/namespace.dart'; |
| 22 import 'package:analysis_server/src/services/index/index.dart'; | 22 import 'package:analysis_server/src/services/index/index.dart'; |
| 23 import 'package:analysis_server/src/services/search/search_engine.dart'; | 23 import 'package:analysis_server/src/services/search/search_engine.dart'; |
| 24 import 'package:analysis_server/src/services/search/search_engine_internal.dart'
; | 24 import 'package:analysis_server/src/services/search/search_engine_internal.dart'
; |
| 25 import 'package:analysis_server/src/single_context_manager.dart'; | 25 import 'package:analysis_server/src/single_context_manager.dart'; |
| 26 import 'package:analyzer/dart/ast/ast.dart'; | 26 import 'package:analyzer/dart/ast/ast.dart'; |
| 27 import 'package:analyzer/dart/element/element.dart'; | 27 import 'package:analyzer/dart/element/element.dart'; |
| 28 import 'package:analyzer/file_system/file_system.dart'; | 28 import 'package:analyzer/file_system/file_system.dart'; |
| 29 import 'package:analyzer/instrumentation/instrumentation.dart'; | 29 import 'package:analyzer/instrumentation/instrumentation.dart'; |
| 30 import 'package:analyzer/plugin/embedded_resolver_provider.dart'; | |
| 31 import 'package:analyzer/plugin/resolver_provider.dart'; | 30 import 'package:analyzer/plugin/resolver_provider.dart'; |
| 32 import 'package:analyzer/source/embedder.dart'; | 31 import 'package:analyzer/source/embedder.dart'; |
| 33 import 'package:analyzer/source/pub_package_map_provider.dart'; | 32 import 'package:analyzer/source/pub_package_map_provider.dart'; |
| 34 import 'package:analyzer/src/dart/ast/utilities.dart'; | 33 import 'package:analyzer/src/dart/ast/utilities.dart'; |
| 35 import 'package:analyzer/src/generated/engine.dart'; | 34 import 'package:analyzer/src/generated/engine.dart'; |
| 36 import 'package:analyzer/src/generated/java_engine.dart'; | 35 import 'package:analyzer/src/generated/java_engine.dart'; |
| 37 import 'package:analyzer/src/generated/java_io.dart'; | 36 import 'package:analyzer/src/generated/java_io.dart'; |
| 38 import 'package:analyzer/src/generated/sdk.dart'; | 37 import 'package:analyzer/src/generated/sdk.dart'; |
| 39 import 'package:analyzer/src/generated/source.dart'; | 38 import 'package:analyzer/src/generated/source.dart'; |
| 40 import 'package:analyzer/src/generated/source_io.dart'; | 39 import 'package:analyzer/src/generated/source_io.dart'; |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 */ | 305 */ |
| 307 AnalysisServer( | 306 AnalysisServer( |
| 308 this.channel, | 307 this.channel, |
| 309 this.resourceProvider, | 308 this.resourceProvider, |
| 310 PubPackageMapProvider packageMapProvider, | 309 PubPackageMapProvider packageMapProvider, |
| 311 Index _index, | 310 Index _index, |
| 312 this.serverPlugin, | 311 this.serverPlugin, |
| 313 this.options, | 312 this.options, |
| 314 this.defaultSdkCreator, | 313 this.defaultSdkCreator, |
| 315 this.instrumentationService, | 314 this.instrumentationService, |
| 316 {EmbeddedResolverProvider embeddedResolverProvider: null, | 315 {ResolverProvider packageResolverProvider: null, |
| 317 ResolverProvider packageResolverProvider: null, | |
| 318 bool useSingleContextManager: false, | 316 bool useSingleContextManager: false, |
| 319 this.rethrowExceptions: true}) | 317 this.rethrowExceptions: true}) |
| 320 : index = _index, | 318 : index = _index, |
| 321 searchEngine = _index != null ? new SearchEngineImpl(_index) : null { | 319 searchEngine = _index != null ? new SearchEngineImpl(_index) : null { |
| 322 _performance = performanceDuringStartup; | 320 _performance = performanceDuringStartup; |
| 323 defaultContextOptions.incremental = true; | 321 defaultContextOptions.incremental = true; |
| 324 defaultContextOptions.incrementalApi = | 322 defaultContextOptions.incrementalApi = |
| 325 options.enableIncrementalResolutionApi; | 323 options.enableIncrementalResolutionApi; |
| 326 defaultContextOptions.incrementalValidation = | 324 defaultContextOptions.incrementalValidation = |
| 327 options.enableIncrementalResolutionValidation; | 325 options.enableIncrementalResolutionValidation; |
| 328 defaultContextOptions.generateImplicitErrors = false; | 326 defaultContextOptions.generateImplicitErrors = false; |
| 329 operationQueue = new ServerOperationQueue(); | 327 operationQueue = new ServerOperationQueue(); |
| 330 sdkManager = new DartSdkManager(defaultSdkCreator); | 328 sdkManager = new DartSdkManager(defaultSdkCreator); |
| 331 if (useSingleContextManager) { | 329 if (useSingleContextManager) { |
| 332 contextManager = new SingleContextManager(resourceProvider, sdkManager, | 330 contextManager = new SingleContextManager(resourceProvider, sdkManager, |
| 333 packageResolverProvider, analyzedFilesGlobs, defaultContextOptions); | 331 packageResolverProvider, analyzedFilesGlobs, defaultContextOptions); |
| 334 } else { | 332 } else { |
| 335 contextManager = new ContextManagerImpl( | 333 contextManager = new ContextManagerImpl( |
| 336 resourceProvider, | 334 resourceProvider, |
| 337 sdkManager, | 335 sdkManager, |
| 338 packageResolverProvider, | 336 packageResolverProvider, |
| 339 embeddedResolverProvider, | |
| 340 packageMapProvider, | 337 packageMapProvider, |
| 341 analyzedFilesGlobs, | 338 analyzedFilesGlobs, |
| 342 instrumentationService, | 339 instrumentationService, |
| 343 defaultContextOptions); | 340 defaultContextOptions); |
| 344 } | 341 } |
| 345 ServerContextManagerCallbacks contextManagerCallbacks = | 342 ServerContextManagerCallbacks contextManagerCallbacks = |
| 346 new ServerContextManagerCallbacks(this, resourceProvider); | 343 new ServerContextManagerCallbacks(this, resourceProvider); |
| 347 contextManager.callbacks = contextManagerCallbacks; | 344 contextManager.callbacks = contextManagerCallbacks; |
| 348 _noErrorNotification = options.noErrorNotification; | 345 _noErrorNotification = options.noErrorNotification; |
| 349 AnalysisEngine.instance.logger = new AnalysisLogger(this); | 346 AnalysisEngine.instance.logger = new AnalysisLogger(this); |
| (...skipping 1269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1619 /** | 1616 /** |
| 1620 * Set up a [SourceFactory] that resolves packages as appropriate for the | 1617 * Set up a [SourceFactory] that resolves packages as appropriate for the |
| 1621 * given [disposition]. | 1618 * given [disposition]. |
| 1622 */ | 1619 */ |
| 1623 SourceFactory _createSourceFactory(InternalAnalysisContext context, | 1620 SourceFactory _createSourceFactory(InternalAnalysisContext context, |
| 1624 AnalysisOptions options, FolderDisposition disposition, Folder folder) { | 1621 AnalysisOptions options, FolderDisposition disposition, Folder folder) { |
| 1625 List<UriResolver> resolvers = []; | 1622 List<UriResolver> resolvers = []; |
| 1626 List<UriResolver> packageUriResolvers = | 1623 List<UriResolver> packageUriResolvers = |
| 1627 disposition.createPackageUriResolvers(resourceProvider); | 1624 disposition.createPackageUriResolvers(resourceProvider); |
| 1628 | 1625 |
| 1629 EmbedderUriResolver embedderUriResolver; | |
| 1630 | |
| 1631 // First check for a resolver provider. | |
| 1632 ContextManager contextManager = analysisServer.contextManager; | |
| 1633 if (contextManager is ContextManagerImpl) { | |
| 1634 EmbeddedResolverProvider resolverProvider = | |
| 1635 contextManager.embeddedUriResolverProvider; | |
| 1636 if (resolverProvider != null) { | |
| 1637 embedderUriResolver = resolverProvider(folder); | |
| 1638 } | |
| 1639 } | |
| 1640 | |
| 1641 // If no embedded URI resolver was provided, defer to a locator-backed one. | 1626 // If no embedded URI resolver was provided, defer to a locator-backed one. |
| 1642 embedderUriResolver ??= new EmbedderUriResolver( | 1627 EmbedderUriResolver embedderUriResolver = |
| 1643 context.embedderYamlLocator.embedderYamls); | 1628 new EmbedderUriResolver(context.embedderYamlLocator.embedderYamls); |
| 1644 if (embedderUriResolver.length == 0) { | 1629 if (embedderUriResolver.length == 0) { |
| 1645 // The embedder uri resolver has no mappings. Use the default Dart SDK | 1630 // The embedder uri resolver has no mappings. Use the default Dart SDK |
| 1646 // uri resolver. | 1631 // uri resolver. |
| 1647 resolvers.add(new DartUriResolver( | 1632 resolvers.add(new DartUriResolver( |
| 1648 analysisServer.sdkManager.getSdkForOptions(options))); | 1633 analysisServer.sdkManager.getSdkForOptions(options))); |
| 1649 } else { | 1634 } else { |
| 1650 // The embedder uri resolver has mappings, use it instead of the default | 1635 // The embedder uri resolver has mappings, use it instead of the default |
| 1651 // Dart SDK uri resolver. | 1636 // Dart SDK uri resolver. |
| 1652 resolvers.add(embedderUriResolver); | 1637 resolvers.add(embedderUriResolver); |
| 1653 } | 1638 } |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1765 /** | 1750 /** |
| 1766 * The [PerformanceTag] for time spent in server request handlers. | 1751 * The [PerformanceTag] for time spent in server request handlers. |
| 1767 */ | 1752 */ |
| 1768 static PerformanceTag serverRequests = new PerformanceTag('serverRequests'); | 1753 static PerformanceTag serverRequests = new PerformanceTag('serverRequests'); |
| 1769 | 1754 |
| 1770 /** | 1755 /** |
| 1771 * The [PerformanceTag] for time spent in split store microtasks. | 1756 * The [PerformanceTag] for time spent in split store microtasks. |
| 1772 */ | 1757 */ |
| 1773 static PerformanceTag splitStore = new PerformanceTag('splitStore'); | 1758 static PerformanceTag splitStore = new PerformanceTag('splitStore'); |
| 1774 } | 1759 } |
| OLD | NEW |