@@ -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
309327fn 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