Index: pkg/dev_compiler/lib/src/compiler/compiler.dart |
diff --git a/pkg/dev_compiler/lib/src/compiler/compiler.dart b/pkg/dev_compiler/lib/src/compiler/compiler.dart |
index 62921bd3ae3beb6b956b74b0658464d68c3751f4..65fc61cf83996cf71d51ed512c7ed55a7c531ee3 100644 |
--- a/pkg/dev_compiler/lib/src/compiler/compiler.dart |
+++ b/pkg/dev_compiler/lib/src/compiler/compiler.dart |
@@ -9,9 +9,15 @@ import 'package:analyzer/dart/element/element.dart' show LibraryElement; |
import 'package:analyzer/analyzer.dart' |
show AnalysisError, CompilationUnit, ErrorSeverity; |
import 'package:analyzer/file_system/file_system.dart' show ResourceProvider; |
+import 'package:analyzer/file_system/physical_file_system.dart' |
+ show PhysicalResourceProvider; |
+import 'package:analyzer/src/context/builder.dart' show ContextBuilder; |
+import 'package:analyzer/src/context/context.dart' show AnalysisContextImpl; |
import 'package:analyzer/src/generated/engine.dart' |
- show AnalysisContext, AnalysisEngine; |
-import 'package:analyzer/src/generated/source.dart' show DartUriResolver; |
+ show AnalysisContext, AnalysisEngine, AnalysisOptionsImpl; |
+import 'package:analyzer/src/generated/sdk.dart' show DartSdkManager; |
+import 'package:analyzer/src/generated/source.dart' |
+ show ContentCache, DartUriResolver; |
import 'package:analyzer/src/generated/source_io.dart' |
show Source, SourceKind, UriResolver; |
import 'package:analyzer/src/summary/package_bundle_reader.dart' |
@@ -23,12 +29,7 @@ import 'package:func/func.dart' show Func1; |
import 'package:path/path.dart' as path; |
import 'package:source_maps/source_maps.dart'; |
-import '../analyzer/context.dart' |
- show |
- AnalyzerOptions, |
- createAnalysisContext, |
- createSdkPathResolver, |
- createSourceFactory; |
+import '../analyzer/context.dart' show AnalyzerOptions, createSourceFactory; |
import '../js_ast/js_ast.dart' as JS; |
import 'code_generator.dart' show CodeGenerator; |
import 'error_helpers.dart' show errorSeverity, formatError, sortErrors; |
@@ -59,25 +60,27 @@ class ModuleCompiler { |
final SummaryDataStore summaryData; |
final ExtensionTypeSet _extensionTypes; |
- ModuleCompiler.withContext(AnalysisContext context, this.summaryData) |
+ ModuleCompiler._(AnalysisContext context, this.summaryData) |
: context = context, |
- _extensionTypes = new ExtensionTypeSet(context) { |
- if (!context.analysisOptions.strongMode) { |
- throw new ArgumentError('AnalysisContext must be strong mode'); |
- } |
- if (!context.sourceFactory.dartSdk.context.analysisOptions.strongMode) { |
- throw new ArgumentError('AnalysisContext must have strong mode SDK'); |
- } |
- } |
+ _extensionTypes = new ExtensionTypeSet(context); |
- factory ModuleCompiler(AnalyzerOptions options, |
- {DartUriResolver sdkResolver, |
- ResourceProvider resourceProvider, |
- List<UriResolver> fileResolvers}) { |
+ factory ModuleCompiler(String projRoot, AnalyzerOptions options, |
+ {ResourceProvider resourceProvider, List<UriResolver> fileResolvers}) { |
AnalysisEngine.instance.processRequiredPlugins(); |
- sdkResolver ??= |
- createSdkPathResolver(options.dartSdkSummaryPath, options.dartSdkPath); |
+ resourceProvider ??= PhysicalResourceProvider.INSTANCE; |
+ |
+ var contextBuilder = new ContextBuilder(resourceProvider, |
+ new DartSdkManager(options.dartSdkPath, true), new ContentCache(), |
+ options: options.contextBuilderOptions); |
+ |
+ var analysisOptions = contextBuilder.getAnalysisOptions(projRoot); |
vsm
2017/01/03 17:56:28
Hmm, looks like this is the library-root being pas
danrubel
2017/01/03 18:51:48
Correct. It will start looking in the projRoot dir
|
+ (analysisOptions as AnalysisOptionsImpl) |
+ ..strongMode = true |
vsm
2017/01/03 17:56:28
Why do we need to set this here and in the context
danrubel
2017/01/03 18:51:48
Hmmm... good point. Removed.
And I moved trackCac
|
+ ..trackCacheDependencies = false; |
+ var sdk = contextBuilder.findSdk(null, analysisOptions); |
+ |
+ var sdkResolver = new DartUriResolver(sdk); |
// Read the summaries. |
var summaryData = |
@@ -89,7 +92,9 @@ class ModuleCompiler { |
summaryData: summaryData, |
resourceProvider: resourceProvider); |
- var context = createAnalysisContext(); |
+ var context = |
+ AnalysisEngine.instance.createAnalysisContext() as AnalysisContextImpl; |
+ context.analysisOptions = analysisOptions; |
context.sourceFactory = srcFactory; |
context.typeProvider = sdkResolver.dartSdk.context.typeProvider; |
context.resultProvider = |
@@ -101,7 +106,14 @@ class ModuleCompiler { |
context.declaredVariables.define('dart.library.html', 'true'); |
context.declaredVariables.define('dart.library.io', 'false'); |
- return new ModuleCompiler.withContext(context, summaryData); |
+ if (!context.analysisOptions.strongMode) { |
+ throw new ArgumentError('AnalysisContext must be strong mode'); |
+ } |
+ if (!context.sourceFactory.dartSdk.context.analysisOptions.strongMode) { |
+ throw new ArgumentError('AnalysisContext must have strong mode SDK'); |
+ } |
+ |
+ return new ModuleCompiler._(context, summaryData); |
} |
bool _isFatalError(AnalysisError e, CompilerOptions options) { |