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

Unified Diff: pkg/analyzer_cli/lib/src/driver.dart

Issue 1631763007: CLI support for embedders (#25380). (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 months 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/analyzer_cli/lib/src/driver.dart
diff --git a/pkg/analyzer_cli/lib/src/driver.dart b/pkg/analyzer_cli/lib/src/driver.dart
index 0b6ae40b5411c9f51f6cbe8f37b460f390b6272c..198eb501658363e7748c3bd53e71b6799b771f49 100644
--- a/pkg/analyzer_cli/lib/src/driver.dart
+++ b/pkg/analyzer_cli/lib/src/driver.dart
@@ -12,6 +12,7 @@ import 'package:analyzer/file_system/file_system.dart' as fileSystem;
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:analyzer/plugin/options.dart';
import 'package:analyzer/source/analysis_options_provider.dart';
+import 'package:analyzer/source/embedder.dart';
import 'package:analyzer/source/package_map_provider.dart';
import 'package:analyzer/source/package_map_resolver.dart';
import 'package:analyzer/source/pub_package_map_provider.dart';
@@ -302,7 +303,8 @@ class Driver {
/// Decide on the appropriate method for resolving URIs based on the given
/// [options] and [customUrlMappings] settings, and return a
/// [SourceFactory] that has been configured accordingly.
- SourceFactory _chooseUriResolutionPolicy(CommandLineOptions options) {
+ SourceFactory _chooseUriResolutionPolicy(
+ CommandLineOptions options, AnalysisContext context) {
Brian Wilkerson 2016/01/26 19:12:33 Given that the only thing we need from the context
pquitslund 2016/01/26 19:22:19 Done.
Packages packages;
Map<String, List<fileSystem.Folder>> packageMap;
UriResolver packageUriResolver;
@@ -356,9 +358,26 @@ class Driver {
}
// Now, build our resolver list.
+ List<UriResolver> resolvers = [];
// 'dart:' URIs come first.
- List<UriResolver> resolvers = [new DartUriResolver(sdk)];
+
+ // Setup embedding.
+ EmbedderYamlLocator yamlLocator =
+ (context as InternalAnalysisContext).embedderYamlLocator;
+ yamlLocator.refresh(packageMap);
+
+ EmbedderUriResolver embedderUriResolver =
+ new EmbedderUriResolver(yamlLocator.embedderYamls);
+ if (embedderUriResolver.length == 0) {
+ // The embedder uri resolver has no mappings. Use the default Dart SDK
+ // uri resolver.
+ resolvers.add(new DartUriResolver(sdk));
+ } else {
+ // The embedder uri resolver has mappings, use it instead of the default
+ // Dart SDK uri resolver.
+ resolvers.add(embedderUriResolver);
+ }
// Next SdkExts.
if (packageMap != null) {
@@ -401,13 +420,15 @@ class Driver {
return;
}
_previousOptions = options;
+
+ // Create a context.
+ AnalysisContext context = AnalysisEngine.instance.createAnalysisContext();
+
// Choose a package resolution policy and a diet parsing policy based on
// the command-line options.
- SourceFactory sourceFactory = _chooseUriResolutionPolicy(options);
+ SourceFactory sourceFactory = _chooseUriResolutionPolicy(options, context);
AnalyzeFunctionBodiesPredicate dietParsingPolicy =
_chooseDietParsingPolicy(options);
- // Create a context using these policies.
- AnalysisContext context = AnalysisEngine.instance.createAnalysisContext();
context.sourceFactory = sourceFactory;
« no previous file with comments | « no previous file | pkg/analyzer_cli/test/data/embedder_client/_packages » ('j') | pkg/analyzer_cli/test/embedder_test.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698