Skip to content

Commit 0d05573

Browse files
committed
fix functor
1 parent 6c4438c commit 0d05573

File tree

2 files changed

+55
-2
lines changed

2 files changed

+55
-2
lines changed

grammar.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ module.exports = grammar({
225225

226226
functor_parameter: $ => seq(
227227
$.module_identifier,
228-
$.module_type_annotation,
228+
optional($.module_type_annotation),
229229
),
230230

231231
module_type_annotation: $ => seq(

test/corpus/modules.txt

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,11 @@ module MyFunctor = (X: {type t}, Y: {type t}): {type tx; type ty} => {
330330
type ty = Y.t
331331
}
332332

333+
module F2: (S1, S1) => T = (X: S, Y: S) => {
334+
let cow = x => Y.foo(X.foo(x))
335+
let sheep = x => 1 + cow(x)
336+
}
337+
333338
--------------------------------------------------------------------------------
334339

335340
(source_file
@@ -372,7 +377,55 @@ module MyFunctor = (X: {type t}, Y: {type t}): {type tx; type ty} => {
372377
name: (type_identifier)
373378
(type_identifier_path
374379
(module_identifier)
375-
(type_identifier)))))))))
380+
(type_identifier))))))))
381+
(module_declaration
382+
(module_binding
383+
name: (module_identifier)
384+
signature: (functor
385+
parameters: (functor_parameters
386+
(functor_parameter
387+
(module_identifier))
388+
(functor_parameter
389+
(module_identifier)))
390+
body: (module_identifier))
391+
definition: (functor
392+
parameters: (functor_parameters
393+
(functor_parameter
394+
(module_identifier)
395+
(module_type_annotation
396+
(module_identifier)))
397+
(functor_parameter
398+
(module_identifier)
399+
(module_type_annotation
400+
(module_identifier))))
401+
body: (block
402+
(let_declaration
403+
(let_binding
404+
pattern: (value_identifier)
405+
body: (function
406+
parameter: (value_identifier)
407+
body: (call_expression
408+
function: (value_identifier_path
409+
(module_identifier)
410+
(value_identifier))
411+
arguments: (arguments
412+
(call_expression
413+
function: (value_identifier_path
414+
(module_identifier)
415+
(value_identifier))
416+
arguments: (arguments
417+
(value_identifier))))))))
418+
(let_declaration
419+
(let_binding
420+
pattern: (value_identifier)
421+
body: (function
422+
parameter: (value_identifier)
423+
body: (binary_expression
424+
left: (number)
425+
right: (call_expression
426+
function: (value_identifier)
427+
arguments: (arguments
428+
(value_identifier))))))))))))
376429

377430
================================================================================
378431
Functor signature

0 commit comments

Comments
 (0)