Skip to content

Commit

Permalink
Remove adding prefixes for auto imports.
Browse files Browse the repository at this point in the history
Adding import prefixes often has false positives.
At this point I think that this feature does more harm than benefit.

R=brianwilkerson@google.com

Bug: dart-lang/sdk#38326
Change-Id: I99e3400aebc062d9de3c298d7ed58520534d061c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116746
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
  • Loading branch information
scheglov authored and commit-bot@chromium.org committed Sep 11, 2019
1 parent be93b04 commit 4f8f592
Show file tree
Hide file tree
Showing 10 changed files with 20 additions and 1,844 deletions.
41 changes: 2 additions & 39 deletions pkg/analysis_server/lib/src/domain_completion.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import 'package:analysis_server/src/services/completion/dart/completion_manager.
import 'package:analysis_server/src/services/completion/token_details/token_detail_builder.dart';
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/dart/element/element.dart' as analyzer;
import 'package:analyzer/src/dart/analysis/driver.dart';
import 'package:analyzer_plugin/protocol/protocol.dart' as plugin;
import 'package:analyzer_plugin/protocol/protocol_common.dart';
Expand Down Expand Up @@ -199,46 +198,10 @@ class CompletionDomainHandler extends AbstractRequestHandler {
var analysisDriver = server.getAnalysisDriver(file);
var session = analysisDriver.currentSession;

var fileElement = await session.getUnitElement(file);
var libraryPath = fileElement.element.librarySource.fullName;

var resolvedLibrary = await session.getResolvedLibrary(libraryPath);

analyzer.LibraryElement requestedLibraryElement;
try {
requestedLibraryElement = await session.getLibraryByUri(
library.uriStr,
);
} on ArgumentError catch (e) {
server.sendResponse(Response.invalidParameter(
request,
'uri',
'Invalid URI: ${library.uriStr}\n$e',
));
return;
}

var requestedElement =
requestedLibraryElement.exportNamespace.get(requestedName);
if (requestedElement == null) {
server.sendResponse(Response.invalidParameter(
request,
'label',
'No such element: $requestedName',
));
return;
}

var completion = params.label;
var builder = DartChangeBuilder(session);
await builder.addFileEdit(libraryPath, (builder) {
var result = builder.importLibraryElement(
targetLibrary: resolvedLibrary,
targetPath: libraryPath,
targetOffset: params.offset,
requestedLibrary: requestedLibraryElement,
requestedElement: requestedElement,
);
await builder.addFileEdit(file, (builder) {
var result = builder.importLibraryElement(library.uri);
if (result.prefix != null) {
completion = '${result.prefix}.$completion';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,6 @@ class CompletionResolveHandler
var analysisDriver = server.getAnalysisDriver(data.file);
var session = analysisDriver.currentSession;

var fileElement = await session.getUnitElement(data.file);
var libraryPath = fileElement.element.librarySource.fullName;

var resolvedLibrary = await session.getResolvedLibrary(libraryPath);

if (token.isCancellationRequested) {
return cancelled();
}
Expand Down Expand Up @@ -115,14 +110,8 @@ class CompletionResolveHandler

var newInsertText = item.insertText ?? item.label;
final builder = DartChangeBuilder(session);
await builder.addFileEdit(libraryPath, (builder) {
final result = builder.importLibraryElement(
targetLibrary: resolvedLibrary,
targetPath: libraryPath,
targetOffset: data.offset,
requestedLibrary: requestedLibraryElement,
requestedElement: requestedElement,
);
await builder.addFileEdit(data.file, (builder) {
final result = builder.importLibraryElement(library.uri);
if (result.prefix != null) {
newInsertText = '${result.prefix}.$newInsertText';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,22 +87,6 @@ main() {} // ref
_assertEmptyChange(result.change);
}

test_invalid_label() async {
addTestFile(r'''
import 'dart:math';
main() {} // ref
''');

var mathSet = await waitForSetWithUri('dart:math');

var response = await waitResponse(
_buildRequest(id: mathSet.id, label: 'foo', offset: 0),
);

expect(response.error.code, RequestErrorCode.INVALID_PARAMETER);
}

test_invalid_library() async {
addTestFile('');

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,13 @@ import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart'
hide Element, ElementKind;
import 'package:analyzer_plugin/src/utilities/change_builder/change_builder_core.dart';
import 'package:analyzer_plugin/src/utilities/change_builder/dart/import_library_element.dart';
import 'package:analyzer_plugin/src/utilities/string_utilities.dart';
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
import 'package:analyzer_plugin/utilities/change_builder/change_workspace.dart';
import 'package:analyzer_plugin/utilities/range_factory.dart';
import 'package:charcode/ascii.dart';
import 'package:dart_style/dart_style.dart';
import 'package:meta/meta.dart';

/**
* A [ChangeBuilder] used to build changes in Dart files.
Expand Down Expand Up @@ -1291,34 +1289,19 @@ class DartFileEditBuilderImpl extends FileEditBuilderImpl
}

@override
ImportLibraryElementResult importLibraryElement({
@required ResolvedLibraryResult targetLibrary,
@required String targetPath,
@required int targetOffset,
@required LibraryElement requestedLibrary,
@required Element requestedElement,
}) {
if (librariesToImport.isNotEmpty ||
librariesToRelativelyImport.isNotEmpty) {
throw StateError('Only one library can be safely imported.');
ImportLibraryElementResult importLibraryElement(Uri uri) {
if (resolvedUnit.libraryElement.source.uri == uri) {
return ImportLibraryElementResultImpl(null);
}

var request = importLibraryElementImpl(
targetResolvedLibrary: targetLibrary,
targetPath: targetPath,
targetOffset: targetOffset,
requestedLibrary: requestedLibrary,
requestedElement: requestedElement,
);

var prefix = request.prefix;
if (request.uri != null) {
var uriText = _getLibraryUriText(request.uri);
(libraryChangeBuilder ?? this).librariesToImport[request.uri] =
_LibraryToImport(uriText, prefix);
for (var import in resolvedUnit.libraryElement.imports) {
if (import.importedLibrary.source.uri == uri) {
return ImportLibraryElementResultImpl(import.prefix?.name);
}
}

return ImportLibraryElementResultImpl(prefix);
importLibrary(uri);
return ImportLibraryElementResultImpl(null);
}

String importLibraryWithRelativeUri(String uriText, [String prefix = null]) {
Expand Down

This file was deleted.

Loading

0 comments on commit 4f8f592

Please sign in to comment.