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

Unified Diff: pkg/analysis_server/lib/src/analysis_server.dart

Issue 1437893003: Add _embedder.yaml support to analyzer and analysis_server (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
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);
}
}
« no previous file with comments | « no previous file | pkg/analysis_server/lib/src/context_manager.dart » ('j') | pkg/analysis_server/lib/src/context_manager.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698