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

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

Issue 2647293007: Move driver creation into ContextBuilder (Closed)
Patch Set: Created 3 years, 11 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 | « pkg/analysis_server/lib/src/analysis_server.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/context/builder.dart
diff --git a/pkg/analyzer/lib/src/context/builder.dart b/pkg/analyzer/lib/src/context/builder.dart
index aad53cfdde47479da00382605de164cd7c689fcc..943d24d7b54c2cc27912a164ed05de083245a9cf 100644
--- a/pkg/analyzer/lib/src/context/builder.dart
+++ b/pkg/analyzer/lib/src/context/builder.dart
@@ -14,6 +14,10 @@ import 'package:analyzer/source/analysis_options_provider.dart';
import 'package:analyzer/source/package_map_resolver.dart';
import 'package:analyzer/src/command_line/arguments.dart'
show applyAnalysisOptionFlags;
+import 'package:analyzer/src/dart/analysis/byte_store.dart';
+import 'package:analyzer/src/dart/analysis/driver.dart'
+ show AnalysisDriver, AnalysisDriverScheduler, PerformanceLog;
+import 'package:analyzer/src/dart/analysis/file_state.dart';
import 'package:analyzer/src/dart/sdk/sdk.dart';
import 'package:analyzer/src/generated/bazel.dart';
import 'package:analyzer/src/generated/engine.dart';
@@ -66,7 +70,8 @@ class ContextBuilder {
final DartSdkManager sdkManager;
/**
- * The cache containing the contents of overlaid files.
+ * The cache containing the contents of overlaid files. If this builder will
+ * be used to build analysis drivers, set the [fileContentOverlay] instead.
*/
final ContentCache contentCache;
@@ -88,6 +93,28 @@ class ContextBuilder {
ResolverProvider fileResolverProvider;
/**
+ * The scheduler used by any analysis drivers created through this interface.
+ */
+ AnalysisDriverScheduler analysisDriverScheduler;
+
+ /**
+ * The performance log used by any analysis drivers created through this
+ * interface.
+ */
+ PerformanceLog performanceLog;
+
+ /**
+ * The byte store used by any analysis drivers created through this interface.
+ */
+ ByteStore byteStore;
+
+ /**
+ * The file content overlay used by analysis drivers. If this builder will be
+ * used to build analysis contexts, set the [contentCache] instead.
+ */
+ FileContentOverlay fileContentOverlay;
+
+ /**
* Initialize a newly created builder to be ready to build a context rooted in
* the directory with the given [rootDirectoryPath].
*/
@@ -116,6 +143,26 @@ class ContextBuilder {
}
/**
+ * Return an analysis driver that is configured correctly to analyze code in
+ * the directory with the given [path].
+ */
+ AnalysisDriver buildDriver(String path) {
+ AnalysisOptions options = getAnalysisOptions(path);
+ //_processAnalysisOptions(context, optionMap);
+ AnalysisDriver driver = new AnalysisDriver(
+ analysisDriverScheduler,
+ performanceLog,
+ resourceProvider,
+ byteStore,
+ fileContentOverlay,
+ path,
+ createSourceFactory(path, options),
+ options);
+ declareVariablesInDriver(driver);
+ return driver;
+ }
+
+ /**
* Configure the context to make use of summaries.
*/
void configureSummaries(InternalAnalysisContext context) {
@@ -233,6 +280,20 @@ class ContextBuilder {
}
/**
+ * Add any [declaredVariables] to the list of declared variables used by the
+ * given analysis [driver].
+ */
+ void declareVariablesInDriver(AnalysisDriver driver) {
+ Map<String, String> variables = builderOptions.declaredVariables;
+ if (variables != null && variables.isNotEmpty) {
+ DeclaredVariables contextVariables = driver.declaredVariables;
+ variables.forEach((String variableName, String value) {
+ contextVariables.define(variableName, value);
+ });
+ }
+ }
+
+ /**
* Finds a package resolution strategy for the directory at the given absolute
* [path].
*
« no previous file with comments | « pkg/analysis_server/lib/src/analysis_server.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698