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

Unified Diff: lib/src/analyzer/context.dart

Issue 1982853002: Allow the SDK to be set via a summary file (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Address comments Created 4 years, 7 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
« no previous file with comments | « lib/runtime/dart_sdk.sum ('k') | pubspec.yaml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/analyzer/context.dart
diff --git a/lib/src/analyzer/context.dart b/lib/src/analyzer/context.dart
index d04a6ae5b63108877a4f2e187c903fa55cf9b60f..3d9d06f3a2c62ded3219bc58b0dd191ed7f4e2c6 100644
--- a/lib/src/analyzer/context.dart
+++ b/lib/src/analyzer/context.dart
@@ -21,6 +21,7 @@ import 'package:analyzer/src/summary/package_bundle_reader.dart'
InSummaryPackageUriResolver,
InputPackagesResultProvider,
SummaryDataStore;
+import 'package:analyzer/src/summary/summary_sdk.dart' show SummaryBasedDartSdk;
import 'package:cli_util/cli_util.dart' show getSdkDir;
import 'package:path/path.dart' as path;
@@ -48,10 +49,15 @@ class AnalyzerOptions {
/// be determined
final String dartSdkPath;
+ /// Path to the dart-sdk summary. If this is set, it will be used in favor
+ /// of the unsummarized one.
+ final String dartSdkSummaryPath;
+
AnalyzerOptions(
{this.summaryPaths: const [],
this.useMockSdk: false,
String dartSdkPath,
+ this.dartSdkSummaryPath,
this.customUrlMappings: const {},
this.packageRoot: 'packages/',
this.packagePaths: const []})
@@ -61,6 +67,7 @@ class AnalyzerOptions {
: summaryPaths = args['summary'],
useMockSdk = false,
dartSdkPath = args['dart-sdk'] ?? getSdkDir().path,
+ dartSdkSummaryPath = args['dart-sdk-summary'],
customUrlMappings = _parseUrlMappings(args['url-mapping']),
packageRoot = args['package-root'],
packagePaths = args['package-paths']?.split(',') ?? [];
@@ -73,6 +80,8 @@ class AnalyzerOptions {
..addOption('summary',
abbr: 's', help: 'summary file(s) to include', allowMultiple: true)
..addOption('dart-sdk', help: 'Dart SDK Path', defaultsTo: null)
+ ..addOption('dart-sdk-summary',
+ help: 'Dart SDK Summary Path', defaultsTo: null)
..addOption('package-root',
abbr: 'p',
help: 'Package root to resolve "package:" imports',
@@ -106,7 +115,7 @@ AnalysisContext createAnalysisContextWithSources(AnalyzerOptions options,
sdkResolver ??= options.useMockSdk
? createMockSdkResolver(mockSdkSources)
- : createSdkPathResolver(options.dartSdkPath);
+ : createSdkPathResolver(options.dartSdkSummaryPath, options.dartSdkPath);
// Read the summaries.
SummaryDataStore summaryData;
@@ -174,11 +183,18 @@ List<UriResolver> createFileResolvers(AnalyzerOptions options) {
DartUriResolver createMockSdkResolver(Map<String, String> mockSources) =>
new MockDartSdk(mockSources, reportMissing: true).resolver;
-/// Creates a [DartUriResolver] that uses the SDK at the given [sdkPath].
-DartUriResolver createSdkPathResolver(String sdkPath) {
+DirectoryBasedDartSdk _createDirectoryBasedDartSdk(String sdkPath) {
var sdk = new DirectoryBasedDartSdk(
new JavaFile(sdkPath), /*useDart2jsPaths:*/ true);
sdk.useSummary = true;
sdk.analysisOptions = new AnalysisOptionsImpl()..strongMode = true;
+ return sdk;
+}
+
+/// Creates a [DartUriResolver] that uses the SDK at the given [sdkPath].
+DartUriResolver createSdkPathResolver(String sdkSummaryPath, String sdkPath) {
+ var sdk = (sdkSummaryPath != null)
+ ? new SummaryBasedDartSdk(sdkSummaryPath, true)
+ : _createDirectoryBasedDartSdk(sdkPath);
return new DartUriResolver(sdk);
}
« no previous file with comments | « lib/runtime/dart_sdk.sum ('k') | pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698