Don't give Source and ResourceProvider to CompletionRequestImpl.

It knows them already.

R=brianwilkerson@google.com

Change-Id: I48de58d7de140b210b17a11d7cc085c43461803c
Reviewed-on: https://dart-review.googlesource.com/55905
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Konstantin Shcheglov 2018-05-18 17:52:28 +00:00 committed by commit-bot@chromium.org
parent 04816270fa
commit 97b6c2e09d
7 changed files with 20 additions and 39 deletions

View file

@ -16,7 +16,6 @@ import 'package:analysis_server/src/services/completion/completion_core.dart';
import 'package:analysis_server/src/services/completion/completion_performance.dart'; import 'package:analysis_server/src/services/completion/completion_performance.dart';
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart'; import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analyzer/src/dart/analysis/driver.dart'; import 'package:analyzer/src/dart/analysis/driver.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer_plugin/protocol/protocol.dart' as plugin; import 'package:analyzer_plugin/protocol/protocol.dart' as plugin;
import 'package:analyzer_plugin/protocol/protocol_common.dart'; import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:analyzer_plugin/protocol/protocol_constants.dart' as plugin; import 'package:analyzer_plugin/protocol/protocol_constants.dart' as plugin;
@ -176,7 +175,6 @@ class CompletionDomainHandler extends AbstractRequestHandler {
int offset = params.offset; int offset = params.offset;
AnalysisResult result = await server.getAnalysisResult(filePath); AnalysisResult result = await server.getAnalysisResult(filePath);
Source source;
if (result == null || !result.exists) { if (result == null || !result.exists) {
if (server.onNoAnalysisCompletion != null) { if (server.onNoAnalysisCompletion != null) {
@ -185,7 +183,6 @@ class CompletionDomainHandler extends AbstractRequestHandler {
request, this, params, performance, completionId); request, this, params, performance, completionId);
return; return;
} }
source = server.resourceProvider.getFile(filePath).createSource();
} else { } else {
if (offset < 0 || offset > result.content.length) { if (offset < 0 || offset > result.content.length) {
server.sendResponse(new Response.invalidParameter( server.sendResponse(new Response.invalidParameter(
@ -195,13 +192,11 @@ class CompletionDomainHandler extends AbstractRequestHandler {
' but found $offset')); ' but found $offset'));
return; return;
} }
source =
server.resourceProvider.getFile(result.path).createSource(result.uri);
recordRequest(performance, source, result.content, offset); recordRequest(performance, filePath, result.content, offset);
} }
CompletionRequestImpl completionRequest = new CompletionRequestImpl( CompletionRequestImpl completionRequest =
result, server.resourceProvider, source, offset, performance); new CompletionRequestImpl(result, offset, performance);
String completionId = (_nextCompletionId++).toString(); String completionId = (_nextCompletionId++).toString();
@ -233,10 +228,10 @@ class CompletionDomainHandler extends AbstractRequestHandler {
* If tracking code completion performance over time, then * If tracking code completion performance over time, then
* record addition information about the request in the performance record. * record addition information about the request in the performance record.
*/ */
void recordRequest(CompletionPerformance performance, Source source, void recordRequest(CompletionPerformance performance, String path,
String content, int offset) { String content, int offset) {
performance.source = source; performance.path = path;
if (performanceListMaxLength == 0 || source == null) { if (performanceListMaxLength == 0) {
return; return;
} }
performance.setContentsAndOffset(content, offset); performance.setContentsAndOffset(content, offset);

View file

@ -108,11 +108,8 @@ library _runtimeCompletion;
} }
CompletionContributor contributor = new DartCompletionManager(); CompletionContributor contributor = new DartCompletionManager();
// TODO(scheglov) Stop requiring Source, it has it in AnalysisResult.
CompletionRequestImpl request = new CompletionRequestImpl( CompletionRequestImpl request = new CompletionRequestImpl(
targetResult, targetResult,
resourceProvider,
targetResult.unit.element.source,
targetOffset, targetOffset,
new CompletionPerformance(), new CompletionPerformance(),
); );

View file

@ -15,9 +15,6 @@ class CompletionRequestImpl implements CompletionRequest {
@override @override
final AnalysisResult result; final AnalysisResult result;
@override
final Source source;
@override @override
final int offset; final int offset;
@ -39,9 +36,6 @@ class CompletionRequestImpl implements CompletionRequest {
*/ */
int replacementLength; int replacementLength;
@override
final ResourceProvider resourceProvider;
bool _aborted = false; bool _aborted = false;
final CompletionPerformance performance; final CompletionPerformance performance;
@ -49,13 +43,17 @@ class CompletionRequestImpl implements CompletionRequest {
/** /**
* Initialize a newly created completion request based on the given arguments. * Initialize a newly created completion request based on the given arguments.
*/ */
CompletionRequestImpl(this.result, this.resourceProvider, Source source, CompletionRequestImpl(this.result, int offset, this.performance)
int offset, this.performance) : this.offset = offset,
: this.source = source,
this.offset = offset,
replacementOffset = offset, replacementOffset = offset,
replacementLength = 0; replacementLength = 0;
@override
ResourceProvider get resourceProvider => result.session.resourceProvider;
@override
Source get source => result.unit.element.source;
@override @override
String get sourceContents => result?.content; String get sourceContents => result?.content;

View file

@ -2,8 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a // 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. // BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/src/generated/source.dart';
/** /**
* Overall performance of a code completion operation. * Overall performance of a code completion operation.
*/ */
@ -13,7 +11,7 @@ class CompletionPerformance {
final Stopwatch _stopwatch = new Stopwatch(); final Stopwatch _stopwatch = new Stopwatch();
final List<OperationPerformance> operations = <OperationPerformance>[]; final List<OperationPerformance> operations = <OperationPerformance>[];
Source source; String path;
String snippet = ''; String snippet = '';
int notificationCount = -1; int notificationCount = -1;
int suggestionCountFirst = -1; int suggestionCountFirst = -1;

View file

@ -350,12 +350,14 @@ class CompletionPage extends DiagnosticPageWithNav {
buf.writeln('<table>'); buf.writeln('<table>');
buf.writeln( buf.writeln(
'<tr><th>Time</th><th>Results</th><th>Source</th><th>Snippet</th></tr>'); '<tr><th>Time</th><th>Results</th><th>Source</th><th>Snippet</th></tr>');
var pathContext = completionDomain.server.resourceProvider.pathContext;
for (CompletionPerformance completion in completions) { for (CompletionPerformance completion in completions) {
String shortName = pathContext.basename(completion.path);
buf.writeln('<tr>' buf.writeln('<tr>'
'<td class="pre right">${printMilliseconds( '<td class="pre right">${printMilliseconds(
completion.elapsedInMilliseconds)}</td>' completion.elapsedInMilliseconds)}</td>'
'<td class="right">${completion.suggestionCount}</td>' '<td class="right">${completion.suggestionCount}</td>'
'<td>${escape(completion.source.shortName)}</td>' '<td>${escape(shortName)}</td>'
'<td><code>${escape(completion.snippet)}</code></td>' '<td><code>${escape(completion.snippet)}</code></td>'
'</tr>'); '</tr>');
} }

View file

@ -11,7 +11,6 @@ import 'package:analysis_server/src/services/completion/dart/completion_manager.
show DartCompletionRequestImpl; show DartCompletionRequestImpl;
import 'package:analyzer/src/dart/analysis/driver.dart'; import 'package:analyzer/src/dart/analysis/driver.dart';
import 'package:analyzer/src/generated/parser.dart' as analyzer; import 'package:analyzer/src/generated/parser.dart' as analyzer;
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart'; import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:test/test.dart'; import 'package:test/test.dart';
@ -26,7 +25,6 @@ int suggestionComparator(CompletionSuggestion s1, CompletionSuggestion s2) {
abstract class DartCompletionContributorTest extends AbstractContextTest { abstract class DartCompletionContributorTest extends AbstractContextTest {
static const String _UNCHECKED = '__UNCHECKED__'; static const String _UNCHECKED = '__UNCHECKED__';
String testFile; String testFile;
Source testSource;
int completionOffset; int completionOffset;
int replacementOffset; int replacementOffset;
int replacementLength; int replacementLength;
@ -59,7 +57,7 @@ abstract class DartCompletionContributorTest extends AbstractContextTest {
expect(nextOffset, equals(-1), reason: 'too many ^'); expect(nextOffset, equals(-1), reason: 'too many ^');
content = content.substring(0, completionOffset) + content = content.substring(0, completionOffset) +
content.substring(completionOffset + 1); content.substring(completionOffset + 1);
testSource = addSource(testFile, content); addSource(testFile, content);
} }
void assertHasNoParameterInfo(CompletionSuggestion suggestion) { void assertHasNoParameterInfo(CompletionSuggestion suggestion) {
@ -473,13 +471,8 @@ abstract class DartCompletionContributorTest extends AbstractContextTest {
Future computeSuggestions({int times = 200}) async { Future computeSuggestions({int times = 200}) async {
AnalysisResult analysisResult = AnalysisResult analysisResult =
await driver.getResult(convertPath(testFile)); await driver.getResult(convertPath(testFile));
testSource = analysisResult.unit.element.source;
CompletionRequestImpl baseRequest = new CompletionRequestImpl( CompletionRequestImpl baseRequest = new CompletionRequestImpl(
analysisResult, analysisResult, completionOffset, new CompletionPerformance());
resourceProvider,
testSource,
completionOffset,
new CompletionPerformance());
// Build the request // Build the request
Completer<DartCompletionRequest> requestCompleter = Completer<DartCompletionRequest> requestCompleter =

View file

@ -48,8 +48,6 @@ part '${convertPathForImport(testFile)}';
// Build the request // Build the request
CompletionRequestImpl baseRequest = new CompletionRequestImpl( CompletionRequestImpl baseRequest = new CompletionRequestImpl(
await driver.getResult(testFile), await driver.getResult(testFile),
resourceProvider,
testSource,
completionOffset, completionOffset,
new CompletionPerformance()); new CompletionPerformance());
Completer<DartCompletionRequest> requestCompleter = Completer<DartCompletionRequest> requestCompleter =