| Index: lib/src/analysis_context.dart
|
| diff --git a/lib/src/analysis_context.dart b/lib/src/analysis_context.dart
|
| index 4b8d3106eadf347c35184985d7e65c7b5792eb23..b41c79248c0807a1e5d2b23c3704f9ebfacc74b0 100644
|
| --- a/lib/src/analysis_context.dart
|
| +++ b/lib/src/analysis_context.dart
|
| @@ -13,23 +13,40 @@ import 'package:analyzer/src/generated/source.dart' show DartUriResolver;
|
| import 'package:analyzer/src/generated/source_io.dart';
|
| import 'package:path/path.dart' as path;
|
|
|
| +import 'package:dev_compiler/strong_mode.dart' show StrongModeOptions;
|
| +
|
| import 'checker/resolver.dart';
|
| import 'dart_sdk.dart';
|
| import 'multi_package_resolver.dart';
|
| import 'options.dart';
|
|
|
| -/// Creates an AnalysisContext with dev_compiler type rules and inference.
|
| +/// Creates an [AnalysisContext] with dev_compiler type rules and inference,
|
| +/// using [createSourceFactory] to set up its [SourceFactory].
|
| +AnalysisContext createAnalysisContextWithSources(
|
| + StrongModeOptions strongOptions, SourceResolverOptions srcOptions,
|
| + {DartUriResolver sdkResolver, List fileResolvers}) {
|
| + var srcFactory = createSourceFactory(srcOptions,
|
| + sdkResolver: sdkResolver, fileResolvers: fileResolvers);
|
| + return createAnalysisContext(strongOptions)..sourceFactory = srcFactory;
|
| +}
|
| +
|
| +/// Creates an analysis context that contains our restricted typing rules.
|
| +AnalysisContext createAnalysisContext(StrongModeOptions options) {
|
| + AnalysisContextImpl res = AnalysisEngine.instance.createAnalysisContext();
|
| + res.libraryResolverFactory =
|
| + (context) => new LibraryResolverWithInference(context, options);
|
| + return res;
|
| +}
|
| +
|
| +/// Creates a SourceFactory configured by the [options].
|
| ///
|
| /// Use [options.useMockSdk] to specify the SDK mode, or use [sdkResolver]
|
| /// to entirely override the DartUriResolver.
|
| ///
|
| /// If supplied, [fileResolvers] will override the default `file:` and
|
| /// `package:` URI resolvers.
|
| -///
|
| -AnalysisContext createAnalysisContext(CompilerOptions options,
|
| +SourceFactory createSourceFactory(SourceResolverOptions options,
|
| {DartUriResolver sdkResolver, List fileResolvers}) {
|
| - var context = _initContext(options);
|
| -
|
| var sdkResolver = options.useMockSdk
|
| ? createMockSdkResolver(mockSdkSources)
|
| : createSdkPathResolver(options.dartSdkPath);
|
| @@ -49,8 +66,7 @@ AnalysisContext createAnalysisContext(CompilerOptions options,
|
| : new PackageUriResolver([new JavaFile(options.packageRoot)]));
|
| }
|
| resolvers.addAll(fileResolvers);
|
| - context.sourceFactory = new SourceFactory(resolvers);
|
| - return context;
|
| + return new SourceFactory(resolvers);
|
| }
|
|
|
| /// Creates a [DartUriResolver] that uses a mock 'dart:' library contents.
|
| @@ -61,8 +77,8 @@ DartUriResolver createMockSdkResolver(Map<String, String> mockSources) =>
|
| DartUriResolver createSdkPathResolver(String sdkPath) =>
|
| new DartUriResolver(new DirectoryBasedDartSdk(new JavaFile(sdkPath)));
|
|
|
| -UriResolver _createImplicitEntryResolver(ResolverOptions options) {
|
| - var entry = path.absolute(ResolverOptions.implicitHtmlFile);
|
| +UriResolver _createImplicitEntryResolver(SourceResolverOptions options) {
|
| + var entry = path.absolute(SourceResolverOptions.implicitHtmlFile);
|
| var src = path.absolute(options.entryPointFile);
|
| var provider = new MemoryResourceProvider();
|
| provider.newFile(
|
| @@ -83,13 +99,3 @@ class ExistingSourceUriResolver implements UriResolver {
|
| }
|
| Uri restoreAbsolute(Source source) => resolver.restoreAbsolute(source);
|
| }
|
| -
|
| -/// Creates an analysis context that contains our restricted typing rules.
|
| -AnalysisContext _initContext(ResolverOptions options) {
|
| - var analysisOptions = new AnalysisOptionsImpl()..cacheSize = 512;
|
| - AnalysisContextImpl res = AnalysisEngine.instance.createAnalysisContext();
|
| - res.analysisOptions = analysisOptions;
|
| - res.libraryResolverFactory =
|
| - (context) => new LibraryResolverWithInference(context, options);
|
| - return res;
|
| -}
|
|
|