commit | ca5ac975feff8bcfa4f676189d20f257c50dc81f | [log] [tgz] |
---|---|---|
author | Konstantin Shcheglov <scheglov@google.com> | Tue Mar 19 14:53:17 2019 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Tue Mar 19 14:53:17 2019 +0000 |
tree | c667aae3c901b803fece2362c5a7e7b08bf6700c | |
parent | 70e3e67dd71267a611429602b342d484fca9b89b [diff] |
Fix for crash in _DartNavigationComputerVisitor._addUriDirectiveRegion when part has invalid URI. R=brianwilkerson@google.com Change-Id: Ia6c62c344cd195449168e5971165a3d37ffc7f67 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97280 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
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 d8fbb56..a04b33f 100644 --- a/pkg/analysis_server/lib/src/domains/analysis/navigation_dart.dart +++ b/pkg/analysis_server/lib/src/domains/analysis/navigation_dart.dart
@@ -356,8 +356,8 @@ * then add the navigation region from the [node] to the [element]. */ void _addUriDirectiveRegion(UriBasedDirective node, Element element) { - if (element != null) { - Source source = element.source; + Source source = element?.source; + if (source != null) { if (resourceProvider.getResource(source.fullName).exists) { computer._addRegionForNode(node.uri, element); }
diff --git a/pkg/analysis_server/test/analysis/notification_navigation_test.dart b/pkg/analysis_server/test/analysis/notification_navigation_test.dart index 7a7aa0f..4f34392 100644 --- a/pkg/analysis_server/test/analysis/notification_navigation_test.dart +++ b/pkg/analysis_server/test/analysis/notification_navigation_test.dart
@@ -855,6 +855,14 @@ assertHasFileTarget(unitFile, 0, 0); } + test_string_part_invalidUri() async { + addTestFile(''' +part ":[invalid]"; +'''); + await prepareNavigation(); + assertNoRegionString('":[invalid]"'); + } + Future<void> test_string_part_unresolvedUri() async { addTestFile(''' library lib;