OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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/plugin/analysis/navigation/navigation_core.dart'
; | 7 import 'package:analysis_server/plugin/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'; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 void _addRegion(int offset, int length, Element element) { | 51 void _addRegion(int offset, int length, Element element) { |
52 if (element is FieldFormalParameterElement) { | 52 if (element is FieldFormalParameterElement) { |
53 element = (element as FieldFormalParameterElement).field; | 53 element = (element as FieldFormalParameterElement).field; |
54 } | 54 } |
55 if (element == null || element == DynamicElementImpl.instance) { | 55 if (element == null || element == DynamicElementImpl.instance) { |
56 return; | 56 return; |
57 } | 57 } |
58 if (element.location == null) { | 58 if (element.location == null) { |
59 return; | 59 return; |
60 } | 60 } |
61 protocol.ElementKind kind = | 61 protocol.ElementKind kind = protocol.convertElementKind(element.kind); |
62 protocol.convertElementKind(element.kind); | |
63 protocol.Location location = protocol.newLocation_fromElement(element); | 62 protocol.Location location = protocol.newLocation_fromElement(element); |
64 if (location == null) { | 63 if (location == null) { |
65 return; | 64 return; |
66 } | 65 } |
67 collector.addRegion(offset, length, kind, location); | 66 collector.addRegion(offset, length, kind, location); |
68 } | 67 } |
69 | 68 |
70 void _addRegion_nodeStart_nodeEnd(AstNode a, AstNode b, Element element) { | 69 void _addRegion_nodeStart_nodeEnd(AstNode a, AstNode b, Element element) { |
71 int offset = a.offset; | 70 int offset = a.offset; |
72 int length = b.end - offset; | 71 int length = b.end - offset; |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 visitNode(AstNode node) { | 318 visitNode(AstNode node) { |
320 // The node ends before the range starts. | 319 // The node ends before the range starts. |
321 if (node.end < start) { | 320 if (node.end < start) { |
322 return; | 321 return; |
323 } | 322 } |
324 // The node starts after the range ends. | 323 // The node starts after the range ends. |
325 if (node.offset > end) { | 324 if (node.offset > end) { |
326 return; | 325 return; |
327 } | 326 } |
328 // The node starts or ends in the range. | 327 // The node starts or ends in the range. |
329 if (isInRange(node.offset) || isInRange(node.end)) { | 328 if (node is! CompilationUnit) { |
330 node.accept(visitor); | 329 if (isInRange(node.offset) || isInRange(node.end) || node is Directive) { |
331 return; | 330 node.accept(visitor); |
| 331 return; |
| 332 } |
332 } | 333 } |
333 // Go deeper. | 334 // Go deeper. |
334 super.visitNode(node); | 335 super.visitNode(node); |
335 } | 336 } |
336 } | 337 } |
OLD | NEW |