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 |