@@ -187,6 +187,24 @@ fn structure_node(node: &SyntaxNode) -> Option<StructureNode> {
187
187
} ;
188
188
Some ( node)
189
189
} ,
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
+ } ,
190
208
ast:: Macro ( it) => decl( it, StructureNodeKind :: SymbolKind ( SymbolKind :: Macro ) ) ,
191
209
_ => None ,
192
210
}
@@ -308,6 +326,17 @@ fn f() {}
308
326
// endregion
309
327
fn g() {}
310
328
}
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
+ }
311
340
"# ,
312
341
expect ! [ [ r#"
313
342
[
@@ -633,6 +662,71 @@ fn g() {}
633
662
),
634
663
deprecated: false,
635
664
},
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
+ },
636
730
]
637
731
"# ] ] ,
638
732
) ;
0 commit comments