diff --git a/corpus/edigits_like.langexp b/corpus/edigits_like.langexp index a41c95c..874dc4c 100644 --- a/corpus/edigits_like.langexp +++ b/corpus/edigits_like.langexp @@ -257,17 +257,16 @@ test_k 'n 'k : Int Int -> Bool = { (simple_name_identifier) (argument_name_identifier) (argument_name_identifier) - (function_type + (simple_type + (simple_type_identifier)) + (simple_type + (simple_type_identifier)) + (reference_type (simple_type - (simple_type_identifier)) + (simple_type_identifier))) + (reference_type (simple_type - (simple_type_identifier)) - (reference_type - (simple_type - (simple_type_identifier))) - (reference_type - (simple_type - (simple_type_identifier)))) + (simple_type_identifier))) (block (empty_lines) (condition @@ -358,12 +357,11 @@ test_k 'n 'k : Int Int -> Bool = { (function_definition (simple_name_identifier) (argument_name_identifier) - (function_type + (simple_type + (simple_type_identifier)) + (reference_type (simple_type - (simple_type_identifier)) - (reference_type - (simple_type - (simple_type_identifier)))) + (simple_type_identifier))) (block (empty_lines) (match @@ -455,14 +453,13 @@ test_k 'n 'k : Int Int -> Bool = { (simple_name_identifier) (argument_name_identifier) (argument_name_identifier) - (function_type + (simple_type + (simple_type_identifier)) + (simple_type + (simple_type_identifier)) + (reference_type (simple_type - (simple_type_identifier)) - (simple_type - (simple_type_identifier)) - (reference_type - (simple_type - (simple_type_identifier)))) + (simple_type_identifier))) (block (empty_lines) (condition diff --git a/corpus/test.langexp b/corpus/test.langexp index edfb5ff..02d62b6 100644 --- a/corpus/test.langexp +++ b/corpus/test.langexp @@ -445,13 +445,12 @@ functional_arguments_test 'x 'y : (( Int -> Int )) (( Float <- Float -> Float )) (index_literal))) (simple_name_identifier) (argument_name_identifier) - (function_type - (annotation_identifier) + (annotation_identifier) + (simple_type + (simple_type_identifier)) + (reference_type (simple_type - (simple_type_identifier)) - (reference_type - (simple_type - (simple_type_identifier)))) + (simple_type_identifier))) (match (name_expression (argument_name_identifier)) @@ -1102,13 +1101,12 @@ functional_arguments_test 'x 'y : (( Int -> Int )) (( Float <- Float -> Float )) (simple_name_identifier) (argument_name_identifier) (argument_name_identifier) - (function_type - (reference_type - (simple_type - (argument_type_identifier))) - (reference_type - (simple_type - (argument_type_identifier)))) + (reference_type + (simple_type + (argument_type_identifier))) + (reference_type + (simple_type + (argument_type_identifier))) (comma_expression (comma_expression (match @@ -1161,16 +1159,15 @@ functional_arguments_test 'x 'y : (( Int -> Int )) (( Float <- Float -> Float )) (definition_info (info)) (simple_name_identifier) - (function_type - (reference_type - (simple_type - (simple_type_identifier))) - (reference_type - (simple_type - (simple_type_identifier))) - (reference_type - (simple_type - (simple_type_identifier)))) + (reference_type + (simple_type + (simple_type_identifier))) + (reference_type + (simple_type + (simple_type_identifier))) + (reference_type + (simple_type + (simple_type_identifier))) (operator_expression (operator_expression (name_expression @@ -1203,16 +1200,15 @@ functional_arguments_test 'x 'y : (( Int -> Int )) (( Float <- Float -> Float )) (simple_name_identifier) (argument_name_identifier) (argument_name_identifier) - (function_type - (reference_type - (simple_type - (simple_type_identifier))) - (reference_type - (simple_type - (simple_type_identifier))) - (reference_type - (simple_type - (simple_type_identifier)))) + (reference_type + (simple_type + (simple_type_identifier))) + (reference_type + (simple_type + (simple_type_identifier))) + (reference_type + (simple_type + (simple_type_identifier))) (constructor (simple_type (simple_type_identifier)) @@ -1227,16 +1223,15 @@ functional_arguments_test 'x 'y : (( Int -> Int )) (( Float <- Float -> Float )) (simple_name_identifier) (argument_name_identifier) (argument_name_identifier) - (function_type - (reference_type - (simple_type - (simple_type_identifier))) - (reference_type - (simple_type - (simple_type_identifier))) - (reference_type - (simple_type - (simple_type_identifier)))) + (reference_type + (simple_type + (simple_type_identifier))) + (reference_type + (simple_type + (simple_type_identifier))) + (reference_type + (simple_type + (simple_type_identifier))) (constructor (simple_type (simple_type_identifier)) @@ -1251,12 +1246,11 @@ functional_arguments_test 'x 'y : (( Int -> Int )) (( Float <- Float -> Float )) (empty_lines) (function_definition (simple_name_identifier) - (function_type + (simple_type + (simple_type_identifier)) + (reference_type (simple_type - (simple_type_identifier)) - (reference_type - (simple_type - (simple_type_identifier))))) + (simple_type_identifier)))) (empty_lines) (function_definition (definition_info @@ -1496,21 +1490,20 @@ functional_arguments_test 'x 'y : (( Int -> Int )) (( Float <- Float -> Float )) (argument_name_identifier) (argument_name_identifier) (function_type - (function_type + (simple_type + (simple_type_identifier)) + (reference_type (simple_type - (simple_type_identifier)) - (reference_type - (simple_type - (simple_type_identifier)))) - (function_type + (simple_type_identifier)))) + (function_type + (simple_type + (simple_type_identifier)) + (reference_type (simple_type - (simple_type_identifier)) - (reference_type - (simple_type - (simple_type_identifier))) - (reference_type - (simple_type - (simple_type_identifier))))) + (simple_type_identifier))) + (reference_type + (simple_type + (simple_type_identifier)))) (name_expression (simple_name_identifier))) (empty_lines)) diff --git a/grammar.js b/grammar.js index cbaa085..ecaa181 100644 --- a/grammar.js +++ b/grammar.js @@ -53,7 +53,7 @@ module.exports = grammar({ )), optional(seq( ':', - choice($.function_type, $._annotated_type), + repeat1($._annotated_type), )), choice(seq('=', choice(prec(2, choice($.block, $.array)), seq($._super_expression, ';'))), ';'), ), @@ -223,8 +223,10 @@ module.exports = grammar({ ), function_type: $ => seq( + '((', $._annotated_type, repeat1($._annotated_type), + '))', ), // add annotations to in all types ?? @@ -263,7 +265,7 @@ module.exports = grammar({ $.tuple_type, //$.function_type, ), ')'), - seq('((', $.function_type, '))'), + $.function_type, ), // --- comments