| Index: lib/src/analyzer/context.dart
|
| diff --git a/lib/src/analyzer/context.dart b/lib/src/analyzer/context.dart
|
| index be7f71d5a2fc925c298ddf0704d50fe5d12a6c8c..92bc8ffbb841cd6c463fee48ee1545b367334baa 100644
|
| --- a/lib/src/analyzer/context.dart
|
| +++ b/lib/src/analyzer/context.dart
|
| @@ -16,6 +16,11 @@ import 'package:analyzer/src/generated/source_io.dart'
|
| PackageUriResolver,
|
| SourceFactory,
|
| UriResolver;
|
| +import 'package:analyzer/src/summary/package_bundle_reader.dart'
|
| + show
|
| + InSummaryPackageUriResolver,
|
| + InputPackagesResultProvider,
|
| + SummaryDataStore;
|
| import 'package:cli_util/cli_util.dart' show getSdkDir;
|
|
|
| import 'dart_sdk.dart' show MockDartSdk, mockSdkSources;
|
| @@ -97,9 +102,30 @@ class AnalyzerOptions {
|
| AnalysisContext createAnalysisContextWithSources(AnalyzerOptions options,
|
| {DartUriResolver sdkResolver, List<UriResolver> fileResolvers}) {
|
| AnalysisEngine.instance.processRequiredPlugins();
|
| - var srcFactory = createSourceFactory(options,
|
| - sdkResolver: sdkResolver, fileResolvers: fileResolvers);
|
| - return createAnalysisContext()..sourceFactory = srcFactory;
|
| +
|
| + sdkResolver ??= options.useMockSdk
|
| + ? createMockSdkResolver(mockSdkSources)
|
| + : createSdkPathResolver(options.dartSdkPath);
|
| +
|
| + // Read the summaries.
|
| + SummaryDataStore summaryData;
|
| + if (options.summaryPaths.isNotEmpty) {
|
| + summaryData = new SummaryDataStore(options.summaryPaths);
|
| + }
|
| +
|
| + var srcFactory = _createSourceFactory(options,
|
| + sdkResolver: sdkResolver,
|
| + fileResolvers: fileResolvers,
|
| + summaryData: summaryData);
|
| +
|
| + var context = createAnalysisContext();
|
| + context.sourceFactory = srcFactory;
|
| + if (summaryData != null) {
|
| + context.typeProvider = sdkResolver.dartSdk.context.typeProvider;
|
| + context.resultProvider =
|
| + new InputPackagesResultProvider(context, summaryData);
|
| + }
|
| + return context;
|
| }
|
|
|
| /// Creates an analysis context that contains our restricted typing rules.
|
| @@ -116,17 +142,19 @@ AnalysisContext createAnalysisContext() {
|
| ///
|
| /// If supplied, [fileResolvers] will override the default `file:` and
|
| /// `package:` URI resolvers.
|
| -SourceFactory createSourceFactory(AnalyzerOptions options,
|
| - {DartUriResolver sdkResolver, List<UriResolver> fileResolvers}) {
|
| - sdkResolver ??= options.useMockSdk
|
| - ? createMockSdkResolver(mockSdkSources)
|
| - : createSdkPathResolver(options.dartSdkPath);
|
| -
|
| +SourceFactory _createSourceFactory(AnalyzerOptions options,
|
| + {DartUriResolver sdkResolver,
|
| + List<UriResolver> fileResolvers,
|
| + SummaryDataStore summaryData}) {
|
| var resolvers = <UriResolver>[];
|
| if (options.customUrlMappings.isNotEmpty) {
|
| resolvers.add(new CustomUriResolver(options.customUrlMappings));
|
| }
|
| resolvers.add(sdkResolver);
|
| + if (summaryData != null) {
|
| + resolvers.add(new InSummaryPackageUriResolver(summaryData));
|
| + }
|
| +
|
| if (fileResolvers == null) fileResolvers = createFileResolvers(options);
|
| resolvers.addAll(fileResolvers);
|
| return new SourceFactory(resolvers);
|
|
|