Skip to content

Commit

Permalink
feat(folding range): add support for Pmod_functor and Pmod_structure
Browse files Browse the repository at this point in the history
  • Loading branch information
tatchi committed Apr 27, 2022
1 parent 75ecf5c commit c44b883
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
17 changes: 17 additions & 0 deletions ocaml-lsp-server/src/folding_range.ml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,22 @@ let fold_over_parsetree (parsetree : Mreader.parsetree) =
self.module_type self module_declaration.pmd_type
in

let module_expr (self : Ast_iterator.iterator)
(module_expr : Parsetree.module_expr) =
match module_expr.pmod_desc with
| Parsetree.Pmod_functor (_, _) | Parsetree.Pmod_structure _ ->
let range = Range.of_loc module_expr.pmod_loc in
push range;
Ast_iterator.default_iterator.module_expr self module_expr
| Parsetree.Pmod_ident _
| Parsetree.Pmod_apply (_, _)
| Parsetree.Pmod_constraint (_, _)
| Parsetree.Pmod_unpack _
| Parsetree.Pmod_extension _
| Parsetree.Pmod_hole ->
Ast_iterator.default_iterator.module_expr self module_expr
in

let class_declaration (self : Ast_iterator.iterator)
(class_decl : Parsetree.class_declaration) =
class_decl.Parsetree.pci_loc |> Range.of_loc |> push;
Expand Down Expand Up @@ -255,6 +271,7 @@ let fold_over_parsetree (parsetree : Mreader.parsetree) =
; extension
; module_binding
; module_declaration
; module_expr
; module_type
; module_type_declaration
; open_declaration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,13 @@ describe("textDocument/foldingRange", () => {
"startCharacter": 0,
"startLine": 0,
},
Object {
"endCharacter": 3,
"endLine": 3,
"kind": "region",
"startCharacter": 5,
"startLine": 0,
},
Object {
"endCharacter": 6,
"endLine": 2,
Expand Down Expand Up @@ -488,6 +495,13 @@ describe("textDocument/foldingRange", () => {
"startCharacter": 0,
"startLine": 0,
},
Object {
"endCharacter": 3,
"endLine": 6,
"kind": "region",
"startCharacter": 18,
"startLine": 0,
},
Object {
"endCharacter": 30,
"endLine": 5,
Expand Down Expand Up @@ -522,6 +536,13 @@ describe("textDocument/foldingRange", () => {
"startCharacter": 0,
"startLine": 0,
},
Object {
"endCharacter": 3,
"endLine": 8,
"kind": "region",
"startCharacter": 25,
"startLine": 0,
},
Object {
"endCharacter": 30,
"endLine": 7,
Expand Down Expand Up @@ -961,6 +982,13 @@ describe("textDocument/foldingRange", () => {
"startCharacter": 0,
"startLine": 7,
},
Object {
"endCharacter": 3,
"endLine": 56,
"kind": "region",
"startCharacter": 11,
"startLine": 7,
},
Object {
"endCharacter": 5,
"endLine": 18,
Expand Down Expand Up @@ -989,6 +1017,13 @@ describe("textDocument/foldingRange", () => {
"startCharacter": 2,
"startLine": 20,
},
Object {
"endCharacter": 5,
"endLine": 31,
"kind": "region",
"startCharacter": 13,
"startLine": 20,
},
Object {
"endCharacter": 30,
"endLine": 30,
Expand Down Expand Up @@ -1294,6 +1329,20 @@ describe("textDocument/foldingRange", () => {
"startCharacter": 0,
"startLine": 0,
},
Object {
"endCharacter": 8,
"endLine": 8,
"kind": "region",
"startCharacter": 10,
"startLine": 1,
},
Object {
"endCharacter": 7,
"endLine": 8,
"kind": "region",
"startCharacter": 5,
"startLine": 3,
},
Object {
"endCharacter": 35,
"endLine": 7,
Expand Down

0 comments on commit c44b883

Please sign in to comment.