aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/body/scope.rs
diff options
context:
space:
mode:
authorJonas Schievink <[email protected]>2020-06-26 17:06:01 +0100
committerJonas Schievink <[email protected]>2020-06-26 17:07:31 +0100
commitefe378d2b43b90f8cf549781e870bfa2ebe90fd0 (patch)
tree2b64c5197fa09129e1cfbce10947ec841d68fbea /crates/ra_hir_def/src/body/scope.rs
parent7f6694b12eaae4aa0359319e57abfced97344227 (diff)
Make find_inner_item fallible
The ItemTree does not collect incomplete items, such as traits with no name, so the (malformed) AST node might have no corresponding item.
Diffstat (limited to 'crates/ra_hir_def/src/body/scope.rs')
-rw-r--r--crates/ra_hir_def/src/body/scope.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/crates/ra_hir_def/src/body/scope.rs b/crates/ra_hir_def/src/body/scope.rs
index 81397b063..99e876683 100644
--- a/crates/ra_hir_def/src/body/scope.rs
+++ b/crates/ra_hir_def/src/body/scope.rs
@@ -337,6 +337,19 @@ fn foo() {
337 ); 337 );
338 } 338 }
339 339
340 #[test]
341 fn broken_inner_item() {
342 do_check(
343 r"
344 fn foo() {
345 trait {}
346 <|>
347 }
348 ",
349 &[],
350 );
351 }
352
340 fn do_check_local_name(ra_fixture: &str, expected_offset: u32) { 353 fn do_check_local_name(ra_fixture: &str, expected_offset: u32) {
341 let (db, position) = TestDB::with_position(ra_fixture); 354 let (db, position) = TestDB::with_position(ra_fixture);
342 let file_id = position.file_id; 355 let file_id = position.file_id;