| Index: pkg/analysis_server/lib/src/analysis_server.dart
|
| diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
|
| index 446a3cee09bccef0d96443bbd1dfb3c0dea09ee4..7cc06b8e00222f9de036a3b292fe44ee9e0c96aa 100644
|
| --- a/pkg/analysis_server/lib/src/analysis_server.dart
|
| +++ b/pkg/analysis_server/lib/src/analysis_server.dart
|
| @@ -24,6 +24,7 @@ import 'package:analysis_server/src/services/correction/namespace.dart';
|
| import 'package:analysis_server/src/services/index/index.dart';
|
| import 'package:analysis_server/src/services/search/search_engine.dart';
|
| import 'package:analysis_server/src/services/search/search_engine_internal.dart';
|
| +import 'package:analysis_server/src/services/search/search_engine_internal2.dart';
|
| import 'package:analysis_server/src/single_context_manager.dart';
|
| import 'package:analyzer/dart/ast/ast.dart';
|
| import 'package:analyzer/dart/element/element.dart';
|
| @@ -119,7 +120,7 @@ class AnalysisServer {
|
| /**
|
| * The [SearchEngine] for this server, may be `null` if indexing is disabled.
|
| */
|
| - final SearchEngine searchEngine;
|
| + SearchEngine searchEngine;
|
|
|
| /**
|
| * The plugin associated with this analysis server.
|
| @@ -346,7 +347,7 @@ class AnalysisServer {
|
| this.channel,
|
| this.resourceProvider,
|
| PubPackageMapProvider packageMapProvider,
|
| - Index _index,
|
| + this.index,
|
| this.serverPlugin,
|
| this.options,
|
| this.sdkManager,
|
| @@ -354,9 +355,7 @@ class AnalysisServer {
|
| {ResolverProvider fileResolverProvider: null,
|
| ResolverProvider packageResolverProvider: null,
|
| bool useSingleContextManager: false,
|
| - this.rethrowExceptions: true})
|
| - : index = _index,
|
| - searchEngine = _index != null ? new SearchEngineImpl(_index) : null {
|
| + this.rethrowExceptions: true}) {
|
| _performance = performanceDuringStartup;
|
| defaultContextOptions.incremental = true;
|
| defaultContextOptions.incrementalApi =
|
| @@ -414,6 +413,11 @@ class AnalysisServer {
|
| });
|
| });
|
| _setupIndexInvalidation();
|
| + if (options.enableNewAnalysisDriver) {
|
| + searchEngine = new SearchEngineImpl2(driverMap.values);
|
| + } else if (index != null) {
|
| + searchEngine = new SearchEngineImpl(index);
|
| + }
|
| pubSummaryManager =
|
| new PubSummaryManager(resourceProvider, '${io.pid}.temp');
|
| Notification notification = new ServerConnectedParams(VERSION, io.pid,
|
| @@ -602,11 +606,13 @@ class AnalysisServer {
|
| * otherwise in the first driver, otherwise `null` is returned.
|
| */
|
| Future<nd.AnalysisResult> getAnalysisResult(String path) async {
|
| + print('[getAnalysisResult] path: $path');
|
| nd.AnalysisResult result = priorityFileResults[path];
|
| if (result != null) {
|
| return result;
|
| }
|
| nd.AnalysisDriver driver = getAnalysisDriver(path);
|
| + print('[getAnalysisResult] driver: ${driver.name}');
|
| return driver?.getResult(path);
|
| }
|
|
|
| @@ -771,7 +777,13 @@ class AnalysisServer {
|
| * the [offset].
|
| */
|
| Future<AstNode> getNodeAtOffset(String file, int offset) async {
|
| - CompilationUnit unit = await getResolvedCompilationUnit(file);
|
| + CompilationUnit unit;
|
| + if (options.enableNewAnalysisDriver) {
|
| + nd.AnalysisResult result = await getAnalysisResult(file);
|
| + unit = result?.unit;
|
| + } else {
|
| + unit = await getResolvedCompilationUnit(file);
|
| + }
|
| if (unit != null) {
|
| return new NodeLocator(offset).searchWithin(unit);
|
| }
|
|
|