|
20 | 20 | import java.util.ArrayList;
|
21 | 21 | import java.util.Arrays;
|
22 | 22 | import java.util.Collection;
|
| 23 | +import java.util.Collections; |
23 | 24 | import java.util.List;
|
24 | 25 | import java.util.Map;
|
25 | 26 | import java.util.Optional;
|
@@ -80,7 +81,8 @@ public List<CallHierarchyItem> prepareCallHierarchy(CallHierarchyPrepareParams p
|
80 | 81 | return null;
|
81 | 82 | }
|
82 | 83 | checkMonitor(monitor);
|
83 |
| - return Arrays.asList(toCallHierarchyItem(candidate)); |
| 84 | + CallHierarchyItem symbol = toCallHierarchyItem(candidate); |
| 85 | + return symbol != null ? Arrays.asList(symbol) : Collections.emptyList(); |
84 | 86 | } catch (OperationCanceledException e) {
|
85 | 87 | // do nothing
|
86 | 88 | } catch (JavaModelException e) {
|
@@ -213,9 +215,11 @@ private List<CallHierarchyIncomingCall> getIncomingCallItemsAt(String uri, int l
|
213 | 215 | IOpenable openable = getOpenable(location);
|
214 | 216 | Range callRange = getRange(openable, location);
|
215 | 217 | CallHierarchyItem symbol = toCallHierarchyItem(call.getMember());
|
216 |
| - symbol.setSelectionRange(callRange); |
217 |
| - List<Range> ranges = toCallRanges(callLocations); |
218 |
| - result.add(new CallHierarchyIncomingCall(symbol, ranges)); |
| 218 | + if (symbol != null) { |
| 219 | + symbol.setSelectionRange(callRange); |
| 220 | + List<Range> ranges = toCallRanges(callLocations); |
| 221 | + result.add(new CallHierarchyIncomingCall(symbol, ranges)); |
| 222 | + } |
219 | 223 | }
|
220 | 224 | }
|
221 | 225 | IMember member = call.getMember();
|
@@ -268,7 +272,9 @@ private List<CallHierarchyOutgoingCall> getOutgoingCallItemsAt(String uri, int l
|
268 | 272 | List<Range> ranges = toCallRanges(callLocations);
|
269 | 273 | for (int i = 0; i < callLocations.size(); i++) {
|
270 | 274 | CallHierarchyItem symbol = toCallHierarchyItem(call.getMember());
|
271 |
| - result.add(new CallHierarchyOutgoingCall(symbol, ranges)); |
| 275 | + if (symbol != null) { |
| 276 | + result.add(new CallHierarchyOutgoingCall(symbol, ranges)); |
| 277 | + } |
272 | 278 | }
|
273 | 279 | }
|
274 | 280 | IMember member = call.getMember();
|
@@ -306,6 +312,9 @@ private MethodWrapper getCallRoot(IMember member, boolean isIncomingCall) {
|
306 | 312 |
|
307 | 313 | private CallHierarchyItem toCallHierarchyItem(IMember member) throws JavaModelException {
|
308 | 314 | Location fullLocation = getLocation(member, LocationType.FULL_RANGE);
|
| 315 | + if (fullLocation == null) { |
| 316 | + return null; |
| 317 | + } |
309 | 318 | Range range = fullLocation.getRange();
|
310 | 319 | String uri = fullLocation.getUri();
|
311 | 320 | CallHierarchyItem item = new CallHierarchyItem();
|
|
0 commit comments