Version 2.12.0-91.0.dev
Merge commit '9296c0cbdf67a847d87250b980bb1108f1fdc563' into 'dev'
diff --git a/pkg/analysis_server/lib/src/edit/edit_domain.dart b/pkg/analysis_server/lib/src/edit/edit_domain.dart
index 3cd4538..49dcb3d 100644
--- a/pkg/analysis_server/lib/src/edit/edit_domain.dart
+++ b/pkg/analysis_server/lib/src/edit/edit_domain.dart
@@ -214,7 +214,6 @@
return;
}
- var changes = <SourceChange>[];
//
// Allow plugins to start computing assists.
//
@@ -227,35 +226,12 @@
pluginFutures = server.pluginManager
.broadcastRequest(requestParams, contextRoot: driver.contextRoot);
}
+
//
// Compute fixes associated with server-generated errors.
//
- var result = await server.getResolvedUnit(file);
- server.requestStatistics?.addItemTimeNow(request, 'resolvedUnit');
- if (result != null) {
- var context = DartAssistContextImpl(
- server.instrumentationService,
- DartChangeWorkspace(server.currentSessions),
- result,
- offset,
- length,
- );
- try {
- List<Assist> assists;
- try {
- var processor = AssistProcessor(context);
- assists = await processor.compute();
- } on InconsistentAnalysisException {
- assists = [];
- }
+ var changes = await _computeServerAssists(request, file, offset, length);
- assists.sort(Assist.SORT_BY_RELEVANCE);
- for (var assist in assists) {
- changes.add(assist.change);
- }
- server.requestStatistics?.addItemTimeNow(request, 'computedAssists');
- } catch (_) {}
- }
//
// Add the fixes produced by plugins to the server-generated fixes.
//
@@ -271,6 +247,7 @@
pluginChanges
.sort((first, second) => first.priority.compareTo(second.priority));
changes.addAll(pluginChanges.map(converter.convertPrioritizedSourceChange));
+
//
// Send the response.
//
@@ -765,6 +742,52 @@
return errorFixesList;
}
+ Future<List<SourceChange>> _computeServerAssists(
+ Request request, String file, int offset, int length) async {
+ var changes = <SourceChange>[];
+
+ var result = await server.getResolvedUnit(file);
+ server.requestStatistics?.addItemTimeNow(request, 'resolvedUnit');
+
+ if (result != null) {
+ var context = DartAssistContextImpl(
+ server.instrumentationService,
+ DartChangeWorkspace(server.currentSessions),
+ result,
+ offset,
+ length,
+ );
+
+ try {
+ List<Assist> assists;
+ try {
+ var processor = AssistProcessor(context);
+ assists = await processor.compute();
+ } on InconsistentAnalysisException {
+ assists = [];
+ } catch (exception, stackTrace) {
+ var parametersFile = '''
+offset: $offset
+length: $length
+ ''';
+ throw CaughtExceptionWithFiles(exception, stackTrace, {
+ file: result.content,
+ 'parameters': parametersFile,
+ });
+ }
+
+ assists.sort(Assist.SORT_BY_RELEVANCE);
+ for (var assist in assists) {
+ changes.add(assist.change);
+ }
+
+ server.requestStatistics?.addItemTimeNow(request, 'computedAssists');
+ } catch (_) {}
+ }
+
+ return changes;
+ }
+
/// Compute and return the fixes associated with server-generated errors.
Future<List<AnalysisErrorFixes>> _computeServerErrorFixes(
Request request, String file, int offset) async {
diff --git a/pkg/analyzer/lib/src/command_line/arguments.dart b/pkg/analyzer/lib/src/command_line/arguments.dart
index 8f23b6e..1bf44e0 100644
--- a/pkg/analyzer/lib/src/command_line/arguments.dart
+++ b/pkg/analyzer/lib/src/command_line/arguments.dart
@@ -7,9 +7,7 @@
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/context/builder.dart';
import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/generated/sdk.dart';
import 'package:args/args.dart';
-import 'package:cli_util/cli_util.dart';
const String analysisOptionsFileOption = 'options';
const String defineVariableOption = 'D';
@@ -116,16 +114,6 @@
return builderOptions;
}
-/// Use the given [resourceProvider] and command-line [args] to create a Dart
-/// SDK manager. The manager will use summary information if [useSummaries] is
-/// `true` and if the summary information exists.
-DartSdkManager createDartSdkManager(
- ResourceProvider resourceProvider, ArgResults args) {
- String sdkPath = args[sdkPathOption] ?? getSdkPath();
-
- return DartSdkManager(sdkPath);
-}
-
/// Add the standard flags and options to the given [parser]. The standard flags
/// are those that are typically used to control the way in which the code is
/// analyzed.
diff --git a/pkg/analyzer/lib/src/util/sdk.dart b/pkg/analyzer/lib/src/util/sdk.dart
index 7f6bdea..e1dd259 100644
--- a/pkg/analyzer/lib/src/util/sdk.dart
+++ b/pkg/analyzer/lib/src/util/sdk.dart
@@ -6,23 +6,6 @@
import 'package:path/path.dart' as path;
-/// Return `true` if the given [sdkPath] is valid, i.e. has all required
-/// artifacts.
-String computePlatformBinariesPath(String sdkPath) {
- // Try the given SDK path.
- {
- String location = path.join(sdkPath, 'lib', '_internal');
- if (File(path.join(location, 'vm_platform_strong.dill')).existsSync()) {
- return location;
- }
- }
-
- // The given SDK path does not work.
- // Then we're probably running on bots, in 'xcodebuild/ReleaseX64'.
- // In this case 'vm_platform_strong.dill' is next to the 'dart'.
- return path.dirname(Platform.resolvedExecutable);
-}
-
String getSdkPath([List<String> args]) {
// Look for --dart-sdk on the command line.
if (args != null) {
diff --git a/pkg/analyzer/test/src/command_line/arguments_test.dart b/pkg/analyzer/test/src/command_line/arguments_test.dart
index e3d502f..4f8ada1 100644
--- a/pkg/analyzer/test/src/command_line/arguments_test.dart
+++ b/pkg/analyzer/test/src/command_line/arguments_test.dart
@@ -5,10 +5,8 @@
import 'package:analyzer/src/command_line/arguments.dart';
import 'package:analyzer/src/context/builder.dart';
import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/generated/sdk.dart';
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
import 'package:args/args.dart';
-import 'package:cli_util/cli_util.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -82,26 +80,6 @@
expect(defaultOptions.implicitDynamic, true);
}
- void test_createDartSdkManager_noPath() {
- ArgParser parser = ArgParser();
- defineAnalysisArguments(parser);
- List<String> args = [];
- ArgResults result = parse(resourceProvider, parser, args);
- DartSdkManager manager = createDartSdkManager(resourceProvider, result);
- expect(manager, isNotNull);
- expect(manager.defaultSdkDirectory, getSdkPath());
- }
-
- void test_createDartSdkManager_path() {
- ArgParser parser = ArgParser();
- defineAnalysisArguments(parser);
- List<String> args = ['--dart-sdk=x'];
- ArgResults result = parse(resourceProvider, parser, args);
- DartSdkManager manager = createDartSdkManager(resourceProvider, result);
- expect(manager, isNotNull);
- expect(manager.defaultSdkDirectory, 'x');
- }
-
void test_defineAnalysisArguments() {
ArgParser parser = ArgParser();
defineAnalysisArguments(parser);
diff --git a/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart b/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart
index d477df0..a54fa1a 100644
--- a/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart
@@ -2,8 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'dart:io' as io;
-
import 'package:analyzer/dart/analysis/analysis_context.dart';
import 'package:analyzer/dart/analysis/context_root.dart';
import 'package:analyzer/dart/analysis/declared_variables.dart';
@@ -36,7 +34,6 @@
}
void setUp() {
- newFile(io.Platform.resolvedExecutable); // create folders
var folder = newFolder('/home/test');
contextBuilder = ContextBuilderImpl(resourceProvider: resourceProvider);
contextRoot = ContextRootImpl(resourceProvider, folder);
diff --git a/pkg/analyzer_plugin/test/support/abstract_context.dart b/pkg/analyzer_plugin/test/support/abstract_context.dart
index a648c3f..a634551 100644
--- a/pkg/analyzer_plugin/test/support/abstract_context.dart
+++ b/pkg/analyzer_plugin/test/support/abstract_context.dart
@@ -9,12 +9,12 @@
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/visitor.dart';
+import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart';
import 'package:analyzer/src/dart/analysis/byte_store.dart';
import 'package:analyzer/src/dart/analysis/driver.dart';
import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart';
import 'package:analyzer/src/generated/engine.dart' show AnalysisEngine;
-import 'package:analyzer/src/generated/source_io.dart';
import 'package:analyzer/src/generated/testing/element_search.dart';
import 'package:analyzer/src/test_utilities/mock_packages.dart';
import 'package:analyzer/src/test_utilities/mock_sdk.dart';
@@ -64,10 +64,8 @@
String get workspaceRootPath => convertPath('/home');
- Source addSource(String path, String content, [Uri uri]) {
- var file = newFile(path, content: content);
- var source = file.createSource(uri);
- return source;
+ void addSource(String path, String content) {
+ newFile(path, content: content);
}
AnalysisContext contextFor(String path) {
@@ -104,6 +102,15 @@
.single;
}
+ @override
+ File newFile(String path, {String content = ''}) {
+ if (_analysisContextCollection != null && !path.endsWith('.dart')) {
+ throw StateError('Only dart files can be changed after analysis.');
+ }
+
+ return super.newFile(path, content: content);
+ }
+
Future<ResolvedUnitResult> resolveFile(String path) async {
return contextFor(path).currentSession.getResolvedUnit(path);
}
diff --git a/pkg/analyzer_plugin/test/support/abstract_single_unit.dart b/pkg/analyzer_plugin/test/support/abstract_single_unit.dart
index 4a8ea64..03082d7 100644
--- a/pkg/analyzer_plugin/test/support/abstract_single_unit.dart
+++ b/pkg/analyzer_plugin/test/support/abstract_single_unit.dart
@@ -9,7 +9,6 @@
import 'package:analyzer/src/dart/ast/utilities.dart';
import 'package:analyzer/src/dart/error/hint_codes.dart';
import 'package:analyzer/src/generated/java_engine.dart';
-import 'package:analyzer/src/generated/source.dart';
import 'package:test/test.dart';
import 'abstract_context.dart';
@@ -19,14 +18,13 @@
String testCode;
String testFile;
- Source testSource;
CompilationUnit testUnit;
CompilationUnitElement testUnitElement;
LibraryElement testLibraryElement;
- void addTestSource(String code, [Uri uri]) {
+ void addTestSource(String code) {
testCode = code;
- testSource = addSource(testFile, code, uri);
+ addSource(testFile, code);
}
Element findElement(String name, [ElementKind kind]) {
diff --git a/pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart b/pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart
index b1992c4..2697933 100644
--- a/pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart
+++ b/pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart
@@ -4,7 +4,6 @@
import 'dart:async';
-import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:analyzer_plugin/src/utilities/completion/completion_core.dart';
import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
@@ -23,7 +22,6 @@
abstract class DartCompletionContributorTest extends AbstractContextTest {
static const String _UNCHECKED = '__UNCHECKED__';
String testFile;
- Source testSource;
int completionOffset;
int replacementOffset;
int replacementLength;
@@ -46,7 +44,7 @@
expect(nextOffset, equals(-1), reason: 'too many ^');
content = content.substring(0, completionOffset) +
content.substring(completionOffset + 1);
- testSource = addSource(testFile, content);
+ addSource(testFile, content);
}
void assertHasNoParameterInfo(CompletionSuggestion suggestion) {
@@ -414,7 +412,6 @@
Future computeSuggestions() async {
var result = await resolveFile(testFile);
- testSource = result.unit.declaredElement.source;
request =
DartCompletionRequestImpl(resourceProvider, completionOffset, result);
diff --git a/tools/VERSION b/tools/VERSION
index 16ff566..1f087df 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 12
PATCH 0
-PRERELEASE 90
+PRERELEASE 91
PRERELEASE_PATCH 0
\ No newline at end of file