Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(116)

Unified Diff: pkg/analysis_server/lib/src/domains/analysis/navigation_dart.dart

Issue 2582753003: Fix analysis.getNavigation with the new analysis driver. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_server/lib/src/domains/analysis/navigation_dart.dart
diff --git a/pkg/analysis_server/lib/src/domains/analysis/navigation_dart.dart b/pkg/analysis_server/lib/src/domains/analysis/navigation_dart.dart
index 1ae319369aaa22b5bd21e26b460e793ed1222e86..63f10dfeca0b617794673eb08893defd09435b65 100644
--- a/pkg/analysis_server/lib/src/domains/analysis/navigation_dart.dart
+++ b/pkg/analysis_server/lib/src/domains/analysis/navigation_dart.dart
@@ -15,16 +15,31 @@ import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/source.dart';
-NavigationCollector computeSimpleDartNavigation(
- NavigationCollector collector, CompilationUnit unit) {
+NavigationCollector computeDartNavigation(NavigationCollector collector,
+ CompilationUnit unit, int offset, int length) {
_DartNavigationCollector dartCollector =
new _DartNavigationCollector(collector);
_DartNavigationComputerVisitor visitor =
new _DartNavigationComputerVisitor(dartCollector);
- unit.accept(visitor);
+ if (offset == null || length == null) {
+ unit.accept(visitor);
+ } else {
+ AstNode node = _getNodeForRange(unit, offset, length);
+ node?.accept(visitor);
+ }
return collector;
}
+AstNode _getNodeForRange(CompilationUnit unit, int offset, int length) {
+ AstNode node = new NodeLocator(offset, offset + length).searchWithin(unit);
+ for (AstNode n = node; n != null; n = n.parent) {
+ if (n is Directive) {
+ return n;
+ }
+ }
+ return node;
+}
+
/**
* A computer for navigation regions in a Dart [CompilationUnit].
*/
@@ -37,29 +52,9 @@ class DartNavigationComputer implements NavigationContributor {
CompilationUnit unit =
context.getResolvedCompilationUnit2(source, libraries.first);
if (unit != null) {
- _DartNavigationCollector dartCollector =
- new _DartNavigationCollector(collector);
- _DartNavigationComputerVisitor visitor =
- new _DartNavigationComputerVisitor(dartCollector);
- if (offset == null || length == null) {
- unit.accept(visitor);
- } else {
- AstNode node = _getNodeForRange(unit, offset, length);
- node?.accept(visitor);
- }
- }
- }
- }
-
- static AstNode _getNodeForRange(
- CompilationUnit unit, int offset, int length) {
- AstNode node = new NodeLocator(offset, offset + length).searchWithin(unit);
- for (AstNode n = node; n != null; n = n.parent) {
- if (n is Directive) {
- return n;
+ computeDartNavigation(collector, unit, offset, length);
}
}
- return node;
}
}
« no previous file with comments | « pkg/analysis_server/lib/src/domain_analysis.dart ('k') | pkg/analysis_server/test/analysis/get_navigation_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698