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

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

Issue 1307663007: Rename NavigationHolder to NavigationCollector. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 months 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library domains.analysis.navigation_dart; 5 library domains.analysis.navigation_dart;
6 6
7 import 'package:analysis_server/analysis/navigation/navigation_core.dart'; 7 import 'package:analysis_server/analysis/navigation/navigation_core.dart';
8 import 'package:analysis_server/src/protocol_server.dart' as protocol; 8 import 'package:analysis_server/src/protocol_server.dart' as protocol;
9 import 'package:analyzer/src/generated/ast.dart'; 9 import 'package:analyzer/src/generated/ast.dart';
10 import 'package:analyzer/src/generated/element.dart'; 10 import 'package:analyzer/src/generated/element.dart';
11 import 'package:analyzer/src/generated/engine.dart'; 11 import 'package:analyzer/src/generated/engine.dart';
12 import 'package:analyzer/src/generated/scanner.dart'; 12 import 'package:analyzer/src/generated/scanner.dart';
13 import 'package:analyzer/src/generated/source.dart'; 13 import 'package:analyzer/src/generated/source.dart';
14 14
15 /** 15 /**
16 * A computer for navigation regions in a Dart [CompilationUnit]. 16 * A computer for navigation regions in a Dart [CompilationUnit].
17 */ 17 */
18 class DartNavigationComputer implements NavigationContributor { 18 class DartNavigationComputer implements NavigationContributor {
19 @override 19 @override
20 void computeNavigation(NavigationHolder holder, AnalysisContext context, 20 void computeNavigation(NavigationCollector collector, AnalysisContext context,
21 Source source, int offset, int length) { 21 Source source, int offset, int length) {
22 List<Source> libraries = context.getLibrariesContaining(source); 22 List<Source> libraries = context.getLibrariesContaining(source);
23 if (libraries.isNotEmpty) { 23 if (libraries.isNotEmpty) {
24 CompilationUnit unit = 24 CompilationUnit unit =
25 context.getResolvedCompilationUnit2(source, libraries.first); 25 context.getResolvedCompilationUnit2(source, libraries.first);
26 if (unit != null) { 26 if (unit != null) {
27 _DartNavigationHolder dartHolder = new _DartNavigationHolder(holder); 27 _DartNavigationCollector dartCollector =
28 new _DartNavigationCollector(collector);
28 _DartNavigationComputerVisitor visitor = 29 _DartNavigationComputerVisitor visitor =
29 new _DartNavigationComputerVisitor(dartHolder); 30 new _DartNavigationComputerVisitor(dartCollector);
30 if (offset == null || length == null) { 31 if (offset == null || length == null) {
31 unit.accept(visitor); 32 unit.accept(visitor);
32 } else { 33 } else {
33 _DartRangeAstVisitor partVisitor = 34 _DartRangeAstVisitor partVisitor =
34 new _DartRangeAstVisitor(offset, offset + length, visitor); 35 new _DartRangeAstVisitor(offset, offset + length, visitor);
35 unit.accept(partVisitor); 36 unit.accept(partVisitor);
36 } 37 }
37 } 38 }
38 } 39 }
39 } 40 }
40 } 41 }
41 42
42 class _DartNavigationComputerVisitor extends RecursiveAstVisitor { 43 class _DartNavigationComputerVisitor extends RecursiveAstVisitor {
43 final _DartNavigationHolder computer; 44 final _DartNavigationCollector computer;
44 45
45 _DartNavigationComputerVisitor(this.computer); 46 _DartNavigationComputerVisitor(this.computer);
46 47
47 @override 48 @override
48 visitAssignmentExpression(AssignmentExpression node) { 49 visitAssignmentExpression(AssignmentExpression node) {
49 _safelyVisit(node.leftHandSide); 50 _safelyVisit(node.leftHandSide);
50 computer._addRegionForToken(node.operator, node.bestElement); 51 computer._addRegionForToken(node.operator, node.bestElement);
51 _safelyVisit(node.rightHandSide); 52 _safelyVisit(node.rightHandSide);
52 } 53 }
53 54
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 } 217 }
217 218
218 void _safelyVisit(AstNode node) { 219 void _safelyVisit(AstNode node) {
219 if (node != null) { 220 if (node != null) {
220 node.accept(this); 221 node.accept(this);
221 } 222 }
222 } 223 }
223 } 224 }
224 225
225 /** 226 /**
226 * A Dart specific wrapper around [NavigationHolder]. 227 * A Dart specific wrapper around [NavigationCollector].
227 */ 228 */
228 class _DartNavigationHolder { 229 class _DartNavigationCollector {
229 final NavigationHolder holder; 230 final NavigationCollector collector;
230 231
231 _DartNavigationHolder(this.holder); 232 _DartNavigationCollector(this.collector);
232 233
233 void _addRegion(int offset, int length, Element element) { 234 void _addRegion(int offset, int length, Element element) {
234 if (element is FieldFormalParameterElement) { 235 if (element is FieldFormalParameterElement) {
235 element = (element as FieldFormalParameterElement).field; 236 element = (element as FieldFormalParameterElement).field;
236 } 237 }
237 if (element == null || element == DynamicElementImpl.instance) { 238 if (element == null || element == DynamicElementImpl.instance) {
238 return; 239 return;
239 } 240 }
240 if (element.location == null) { 241 if (element.location == null) {
241 return; 242 return;
242 } 243 }
243 protocol.ElementKind kind = 244 protocol.ElementKind kind =
244 protocol.newElementKind_fromEngine(element.kind); 245 protocol.newElementKind_fromEngine(element.kind);
245 protocol.Location location = protocol.newLocation_fromElement(element); 246 protocol.Location location = protocol.newLocation_fromElement(element);
246 if (location == null) { 247 if (location == null) {
247 return; 248 return;
248 } 249 }
249 holder.addRegion(offset, length, kind, location); 250 collector.addRegion(offset, length, kind, location);
250 } 251 }
251 252
252 void _addRegion_nodeStart_nodeEnd(AstNode a, AstNode b, Element element) { 253 void _addRegion_nodeStart_nodeEnd(AstNode a, AstNode b, Element element) {
253 int offset = a.offset; 254 int offset = a.offset;
254 int length = b.end - offset; 255 int length = b.end - offset;
255 _addRegion(offset, length, element); 256 _addRegion(offset, length, element);
256 } 257 }
257 258
258 void _addRegion_tokenStart_nodeEnd(Token a, AstNode b, Element element) { 259 void _addRegion_tokenStart_nodeEnd(Token a, AstNode b, Element element) {
259 int offset = a.offset; 260 int offset = a.offset;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 } 302 }
302 // The node starts or ends in the range. 303 // The node starts or ends in the range.
303 if (isInRange(node.offset) || isInRange(node.end)) { 304 if (isInRange(node.offset) || isInRange(node.end)) {
304 node.accept(visitor); 305 node.accept(visitor);
305 return; 306 return;
306 } 307 }
307 // Go deeper. 308 // Go deeper.
308 super.visitNode(node); 309 super.visitNode(node);
309 } 310 }
310 } 311 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698