| Index: pkg/analysis_server/lib/src/analysis_server.dart
|
| diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
|
| index 458cdd727cbe31e76842fc509844b9dc89ddaec2..063188e236369b3ecce6efbfdc90b30af3b2ad88 100644
|
| --- a/pkg/analysis_server/lib/src/analysis_server.dart
|
| +++ b/pkg/analysis_server/lib/src/analysis_server.dart
|
| @@ -24,6 +24,7 @@ import 'package:analysis_server/src/services/index/index.dart';
|
| import 'package:analysis_server/src/services/search/search_engine.dart';
|
| import 'package:analyzer/file_system/file_system.dart';
|
| import 'package:analyzer/instrumentation/instrumentation.dart';
|
| +import 'package:analyzer/source/embedder.dart';
|
| import 'package:analyzer/source/pub_package_map_provider.dart';
|
| import 'package:analyzer/src/generated/ast.dart';
|
| import 'package:analyzer/src/generated/element.dart';
|
| @@ -1524,17 +1525,34 @@ class ServerContextManagerCallbacks extends ContextManagerCallbacks {
|
| }
|
| }
|
|
|
| + /// Returns true if the list of [resolvers] contains a [EmbedderUriResolver]
|
| + /// with at least one url mapping.
|
| + static bool _useEmbedderUriResolver(List<UriResolver> resolvers) {
|
| + for (UriResolver resolver in resolvers) {
|
| + if (resolver is EmbedderUriResolver) {
|
| + if (resolver.length > 0) {
|
| + return true;
|
| + }
|
| + }
|
| + }
|
| + return false;
|
| + }
|
| +
|
| /**
|
| * Set up a [SourceFactory] that resolves packages as appropriate for the
|
| * given [disposition].
|
| */
|
| SourceFactory _createSourceFactory(FolderDisposition disposition) {
|
| - UriResolver dartResolver = new DartUriResolver(analysisServer.defaultSdk);
|
| - UriResolver resourceResolver = new ResourceUriResolver(resourceProvider);
|
| List<UriResolver> resolvers = [];
|
| - resolvers.add(dartResolver);
|
| - resolvers.addAll(disposition.createPackageUriResolvers(resourceProvider));
|
| - resolvers.add(resourceResolver);
|
| + List<UriResolver> packageUriResolvers =
|
| + disposition.createPackageUriResolvers(resourceProvider);
|
| + if (!_useEmbedderUriResolver(packageUriResolvers)) {
|
| + // If we aren't using the embedder uri resolver for dart: libraries,
|
| + // insert the default Dart SDK uri resolver.
|
| + resolvers.add(new DartUriResolver(analysisServer.defaultSdk));
|
| + }
|
| + resolvers.addAll(packageUriResolvers);
|
| + resolvers.add(new ResourceUriResolver(resourceProvider));
|
| return new SourceFactory(resolvers, disposition.packages);
|
| }
|
| }
|
|
|