Skip to content

Commit 4282bfa

Browse files
authored
Merge pull request #129 from aspeddro/module-destructuring
support destructuring modules
2 parents 11f3c4d + 5c6bd8b commit 4282bfa

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

grammar.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,7 @@ module.exports = grammar({
474474
$.pipe_expression,
475475
$.subscript_expression,
476476
$.member_expression,
477+
$.module_destructuring_expression,
477478
$.extension_expression,
478479
),
479480

@@ -699,6 +700,10 @@ module.exports = grammar({
699700
),
700701
)),
701702

703+
module_destructuring_expression: $ => seq(
704+
'module', '(', choice($.module_identifier, $.module_identifier_path), ')'
705+
),
706+
702707
call_arguments: $ => seq(
703708
'(',
704709
optional($.uncurry),

test/corpus/modules.txt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,32 @@ open! Foo.Bar
1212
(open_statement
1313
(module_identifier_path (module_identifier) (module_identifier))))
1414

15+
===========================================
16+
Module destructuring
17+
===========================================
18+
19+
20+
let {foo, bar} = module(User)
21+
let {baz, _} = module(User.Inner)
22+
23+
---
24+
25+
(source_file
26+
(let_binding
27+
(record_pattern
28+
(value_identifier)
29+
(value_identifier))
30+
(module_destructuring_expression (module_identifier)))
31+
32+
(let_binding
33+
(record_pattern
34+
(value_identifier)
35+
(value_identifier))
36+
(module_destructuring_expression
37+
(module_identifier_path
38+
(module_identifier)
39+
(module_identifier)))))
40+
1541
===========================================
1642
Include
1743
===========================================

test/highlight/modules.res

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ include NumericCurve({
1010
let foo = foo
1111
})
1212

13+
let {baz, _} = module(User.Inner)
14+
// ^ keyword
15+
// ^ namespace
16+
// ^ namespace
17+
1318
module Belt = {
1419
include (Belt: module type of Belt with module Map := Belt.Map and module Result := Belt.Result)
1520
// ^ include

0 commit comments

Comments
 (0)