| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 import 'package:analyzer/dart/analysis/results.dart'; | 5 import 'package:analyzer/dart/analysis/results.dart'; |
| 6 import 'package:analyzer/file_system/file_system.dart'; | 6 import 'package:analyzer/file_system/file_system.dart'; |
| 7 import 'package:analyzer_plugin/protocol/protocol.dart'; | 7 import 'package:analyzer_plugin/protocol/protocol.dart'; |
| 8 import 'package:analyzer_plugin/protocol/protocol_common.dart' | 8 import 'package:analyzer_plugin/protocol/protocol_common.dart' |
| 9 show ElementKind, Location; | 9 show ElementKind, Location; |
| 10 import 'package:analyzer_plugin/protocol/protocol_generated.dart'; | 10 import 'package:analyzer_plugin/protocol/protocol_generated.dart'; |
| 11 import 'package:analyzer_plugin/src/utilities/navigation/navigation.dart'; | 11 import 'package:analyzer_plugin/src/utilities/navigation/navigation.dart'; |
| 12 import 'package:analyzer_plugin/utilities/generator.dart'; | 12 import 'package:analyzer_plugin/utilities/generator.dart'; |
| 13 | 13 |
| 14 /** | 14 /** |
| 15 * The information about a requested set of navigation information when |
| 16 * computing navigation information in a `.dart` file. |
| 17 * |
| 18 * Clients may not extend, implement or mix-in this class. |
| 19 */ |
| 20 abstract class DartNavigationRequest implements NavigationRequest { |
| 21 /** |
| 22 * The analysis result for the file in which the navigation regions are being |
| 23 * requested. |
| 24 */ |
| 25 ResolveResult get result; |
| 26 } |
| 27 |
| 28 /** |
| 15 * An object that [NavigationContributor]s use to record navigation regions. | 29 * An object that [NavigationContributor]s use to record navigation regions. |
| 16 * | 30 * |
| 17 * Clients may not extend, implement or mix-in this class. | 31 * Clients may not extend, implement or mix-in this class. |
| 18 */ | 32 */ |
| 19 abstract class NavigationCollector { | 33 abstract class NavigationCollector { |
| 20 /** | 34 /** |
| 21 * Record a new navigation region with the given [offset] and [length] that | 35 * Record a new navigation region with the given [offset] and [length] that |
| 22 * should navigate to the given [targetLocation]. | 36 * should navigate to the given [targetLocation]. |
| 23 */ | 37 */ |
| 24 void addRegion( | 38 void addRegion( |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 for (NavigationContributor contributor in contributors) { | 81 for (NavigationContributor contributor in contributors) { |
| 68 try { | 82 try { |
| 69 contributor.computeNavigation(request, collector); | 83 contributor.computeNavigation(request, collector); |
| 70 } catch (exception, stackTrace) { | 84 } catch (exception, stackTrace) { |
| 71 notifications.add(new PluginErrorParams( | 85 notifications.add(new PluginErrorParams( |
| 72 false, exception.toString(), stackTrace.toString()) | 86 false, exception.toString(), stackTrace.toString()) |
| 73 .toNotification()); | 87 .toNotification()); |
| 74 } | 88 } |
| 75 } | 89 } |
| 76 collector.createRegions(); | 90 collector.createRegions(); |
| 77 notifications.add(new AnalysisNavigationParams(request.result.path, | 91 notifications.add(new AnalysisNavigationParams( |
| 78 collector.regions, collector.targets, collector.files) | 92 request.path, collector.regions, collector.targets, collector.files) |
| 79 .toNotification()); | 93 .toNotification()); |
| 80 return new GeneratorResult(null, notifications); | 94 return new GeneratorResult(null, notifications); |
| 81 } | 95 } |
| 82 | 96 |
| 83 /** | 97 /** |
| 84 * Create an 'analysis.getNavigation' response for the portion of the file | 98 * Create an 'analysis.getNavigation' response for the portion of the file |
| 85 * specified by the given [request]. If any of the contributors throws an | 99 * specified by the given [request]. If any of the contributors throws an |
| 86 * exception, also create a non-fatal 'plugin.error' notification. | 100 * exception, also create a non-fatal 'plugin.error' notification. |
| 87 */ | 101 */ |
| 88 GeneratorResult generateNavigationResponse(NavigationRequest request) { | 102 GeneratorResult generateNavigationResponse(NavigationRequest request) { |
| (...skipping 27 matching lines...) Expand all Loading... |
| 116 */ | 130 */ |
| 117 int get length; | 131 int get length; |
| 118 | 132 |
| 119 /** | 133 /** |
| 120 * Return the offset of the region within the source for which navigation | 134 * Return the offset of the region within the source for which navigation |
| 121 * regions are being requested. | 135 * regions are being requested. |
| 122 */ | 136 */ |
| 123 int get offset; | 137 int get offset; |
| 124 | 138 |
| 125 /** | 139 /** |
| 140 * Return the path of the file in which navigation regions are being requested
. |
| 141 */ |
| 142 String get path; |
| 143 |
| 144 /** |
| 126 * Return the resource provider associated with this request. | 145 * Return the resource provider associated with this request. |
| 127 */ | 146 */ |
| 128 ResourceProvider get resourceProvider; | 147 ResourceProvider get resourceProvider; |
| 129 | |
| 130 /** | |
| 131 * The analysis result for the file in which the navigation regions are being | |
| 132 * requested. | |
| 133 */ | |
| 134 ResolveResult get result; | |
| 135 } | 148 } |
| OLD | NEW |