Skip to content

Commit d5088aa

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Migrate lib/src/lsp/handlers/handler_implementation.dart
Change-Id: Iaa32be3faad25e838dee04fe15833ebb51acb7db Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/399580 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Samuel Rawlins <[email protected]>
1 parent b9c5880 commit d5088aa

File tree

3 files changed

+29
-12
lines changed

3 files changed

+29
-12
lines changed

pkg/analysis_server/analyzer_use_new_elements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ lib/src/lsp/handlers/commands/abstract_refactor.dart
1414
lib/src/lsp/handlers/handler_completion.dart
1515
lib/src/lsp/handlers/handler_completion_resolve.dart
1616
lib/src/lsp/handlers/handler_definition.dart
17-
lib/src/lsp/handlers/handler_implementation.dart
1817
lib/src/lsp/handlers/handler_references.dart
1918
lib/src/lsp/handlers/handler_rename.dart
2019
lib/src/protocol_server.dart

pkg/analysis_server/lib/src/analysis_server.dart

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ import 'package:analyzer/dart/analysis/results.dart';
5555
import 'package:analyzer/dart/analysis/session.dart';
5656
import 'package:analyzer/dart/ast/ast.dart';
5757
import 'package:analyzer/dart/element/element.dart';
58+
import 'package:analyzer/dart/element/element2.dart';
5859
import 'package:analyzer/error/error.dart';
5960
import 'package:analyzer/exception/exception.dart';
6061
import 'package:analyzer/file_system/file_system.dart';
@@ -291,8 +292,8 @@ abstract class AnalysisServer {
291292
),
292293
producerGeneratorsForLintRules = AssistProcessor.computeLintRuleMap(),
293294
messageScheduler = MessageScheduler(
294-
testView:
295-
retainDataForTesting ? MessageSchedulerTestView() : null) {
295+
testView: retainDataForTesting ? MessageSchedulerTestView() : null,
296+
) {
296297
messageScheduler.setServer(this);
297298
// Set the default URI converter. This uses the resource providers path
298299
// context (unlike the initialized value) which allows tests to override it.
@@ -696,6 +697,24 @@ abstract class AnalysisServer {
696697
return element;
697698
}
698699

700+
/// Return the [Element] of the given [node], or `null` if [node] is `null` or
701+
/// does not have an element.
702+
Element2? getElementOfNode2(AstNode? node) {
703+
if (node == null) {
704+
return null;
705+
}
706+
if (node is SimpleIdentifier && node.parent is LibraryIdentifier) {
707+
node = node.parent;
708+
}
709+
if (node is LibraryIdentifier) {
710+
node = node.parent;
711+
}
712+
if (node is StringLiteral && node.parent is UriBasedDirective) {
713+
return null;
714+
}
715+
return ElementLocator.locate2(node);
716+
}
717+
699718
/// Return a [LineInfo] for the file with the given [path].
700719
///
701720
/// If the file does not exist or cannot be read, returns `null`.

pkg/analysis_server/lib/src/lsp/handlers/handler_implementation.dart

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@ import 'package:analysis_server/src/lsp/mapping.dart';
1010
import 'package:analysis_server/src/lsp/registration/feature_registration.dart';
1111
import 'package:analysis_server/src/search/type_hierarchy.dart';
1212
import 'package:analyzer/dart/analysis/results.dart';
13-
import 'package:analyzer/dart/element/element.dart';
13+
import 'package:analyzer/dart/element/element2.dart';
1414
import 'package:analyzer/src/dart/ast/utilities.dart';
1515
import 'package:analyzer/src/util/performance/operation_performance.dart';
16-
import 'package:analyzer/src/utilities/extensions/element.dart';
1716

1817
typedef StaticOptions =
1918
Either3<bool, ImplementationOptions, ImplementationRegistrationOptions>;
@@ -64,23 +63,23 @@ class ImplementationHandler
6463
OperationPerformanceImpl performance,
6564
) async {
6665
var node = NodeLocator(offset).searchWithin(result.unit);
67-
var element = server.getElementOfNode(node);
66+
var element = server.getElementOfNode2(node);
6867
if (element == null) {
6968
return success([]);
7069
}
7170

72-
var helper = TypeHierarchyComputerHelper.fromElement(element.asElement2!);
71+
var helper = TypeHierarchyComputerHelper.fromElement(element);
7372
var interfaceElement = helper.pivotClass;
7473
if (interfaceElement == null) {
7574
return success([]);
7675
}
7776
var needsMember = helper.findMemberElement(interfaceElement) != null;
7877

79-
var allSubtypes = <InterfaceElement>{};
78+
var allSubtypes = <InterfaceElement2>{};
8079
await performance.runAsync(
8180
'appendAllSubtypes',
82-
(performance) => server.searchEngine.appendAllSubtypes(
83-
interfaceElement.asElement,
81+
(performance) => server.searchEngine.appendAllSubtypes2(
82+
interfaceElement,
8483
allSubtypes,
8584
performance,
8685
),
@@ -95,8 +94,8 @@ class ImplementationHandler
9594
// Filter based on type, so when searching for members we don't
9695
// include any intermediate classes that don't have
9796
// implementations for the method.
98-
? helper.findMemberElement(element.asElement2)?.nonSynthetic2
99-
: element.asElement2;
97+
? helper.findMemberElement(element)?.nonSynthetic2
98+
: element;
10099
})
101100
.nonNulls
102101
.toSet()

0 commit comments

Comments
 (0)