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

Unified Diff: lib/src/analysis_context.dart

Issue 1174643003: expose strong checker API, for use by analyzer_cli (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 6 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/devc.dart ('k') | lib/src/checker/checker.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
-}
« no previous file with comments | « lib/devc.dart ('k') | lib/src/checker/checker.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698