diff --git a/grammar.js b/grammar.js index c1ed37e..ec58fe9 100644 --- a/grammar.js +++ b/grammar.js @@ -864,7 +864,7 @@ module.exports = grammar({ optional($.as_aliasing), )), - parenthesized_pattern: $ => seq('(', $._pattern, ')'), + parenthesized_pattern: $ => seq('(', $._pattern, optional($.type_annotation), ')'), range_pattern: $ => seq( $._literal_pattern, diff --git a/test/corpus/functions.txt b/test/corpus/functions.txt index 29d62f9..8789f33 100644 --- a/test/corpus/functions.txt +++ b/test/corpus/functions.txt @@ -66,6 +66,7 @@ Type annotations =================================================== (x: int, ~y: float): int => 5 +({contents: (x: int)}, {contents: y}) => x == y --- @@ -76,7 +77,22 @@ Type annotations (parameter (value_identifier) (type_annotation (type_identifier))) (parameter (labeled_parameter (value_identifier) (type_annotation (type_identifier))))) return_type: (type_annotation (type_identifier)) - body: (number)))) + body: (number))) + + (expression_statement + (function parameters: + (formal_parameters + (parameter + (record_pattern + (value_identifier) + (parenthesized_pattern (value_identifier) (type_annotation (type_identifier))))) + (parameter + (record_pattern + (value_identifier) + (value_identifier)))) + body: (binary_expression + left: (value_identifier) + right: (value_identifier))))) =================================================== Abstract type