Skip to content

Commit 003270d

Browse files
authored
Merge pull request rust-lang#18312 from LastExceed/symbolkind-variable
Report document symbols of kind `variable` for let statements
2 parents 25b0846 + b889a11 commit 003270d

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

src/tools/rust-analyzer/crates/ide/src/file_structure.rs

+94
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,24 @@ fn structure_node(node: &SyntaxNode) -> Option<StructureNode> {
187187
};
188188
Some(node)
189189
},
190+
ast::LetStmt(it) => {
191+
let pat = it.pat()?;
192+
193+
let mut label = String::new();
194+
collapse_ws(pat.syntax(), &mut label);
195+
196+
let node = StructureNode {
197+
parent: None,
198+
label,
199+
navigation_range: pat.syntax().text_range(),
200+
node_range: it.syntax().text_range(),
201+
kind: StructureNodeKind::SymbolKind(SymbolKind::Local),
202+
detail: it.ty().map(|ty| ty.to_string()),
203+
deprecated: false,
204+
};
205+
206+
Some(node)
207+
},
190208
ast::Macro(it) => decl(it, StructureNodeKind::SymbolKind(SymbolKind::Macro)),
191209
_ => None,
192210
}
@@ -308,6 +326,17 @@ fn f() {}
308326
// endregion
309327
fn g() {}
310328
}
329+
330+
fn let_statements() {
331+
let x = 42;
332+
let mut y = x;
333+
let Foo {
334+
..
335+
} = Foo { x };
336+
if let None = Some(x) {}
337+
_ = ();
338+
let _ = g();
339+
}
311340
"#,
312341
expect![[r#"
313342
[
@@ -633,6 +662,71 @@ fn g() {}
633662
),
634663
deprecated: false,
635664
},
665+
StructureNode {
666+
parent: None,
667+
label: "let_statements",
668+
navigation_range: 641..655,
669+
node_range: 638..798,
670+
kind: SymbolKind(
671+
Function,
672+
),
673+
detail: Some(
674+
"fn()",
675+
),
676+
deprecated: false,
677+
},
678+
StructureNode {
679+
parent: Some(
680+
26,
681+
),
682+
label: "x",
683+
navigation_range: 668..669,
684+
node_range: 664..675,
685+
kind: SymbolKind(
686+
Local,
687+
),
688+
detail: None,
689+
deprecated: false,
690+
},
691+
StructureNode {
692+
parent: Some(
693+
26,
694+
),
695+
label: "mut y",
696+
navigation_range: 684..689,
697+
node_range: 680..694,
698+
kind: SymbolKind(
699+
Local,
700+
),
701+
detail: None,
702+
deprecated: false,
703+
},
704+
StructureNode {
705+
parent: Some(
706+
26,
707+
),
708+
label: "Foo { .. }",
709+
navigation_range: 703..725,
710+
node_range: 699..738,
711+
kind: SymbolKind(
712+
Local,
713+
),
714+
detail: None,
715+
deprecated: false,
716+
},
717+
StructureNode {
718+
parent: Some(
719+
26,
720+
),
721+
label: "_",
722+
navigation_range: 788..789,
723+
node_range: 784..796,
724+
kind: SymbolKind(
725+
Local,
726+
),
727+
detail: None,
728+
deprecated: false,
729+
},
636730
]
637731
"#]],
638732
);

0 commit comments

Comments
 (0)