Add 'use_assignment' and 'use_assignments' nodes under 'use'

Previously the 'use' node would have many 'identifier' or pattern nodes
and, with the parent commit, types as well. This change should make it
easier to figure out which children nodes of 'use' are associated with
one another.

Co-authored-by: Jonathan Arnett <jonarnett90@gmail.com>
pull/844/head
Michael Davis 2023-08-27 18:33:10 +07:00
parent ceb48343f7
commit ef45f3b044
No known key found for this signature in database
2 changed files with 29 additions and 15 deletions

@ -448,10 +448,12 @@ module.exports = grammar({
use: ($) =>
seq(
"use",
optional(series_of(seq($._pattern, optional($._type_annotation)), ",")),
optional(field("assignments", $.use_assignments)),
"<-",
field("value", $._expression)
),
use_assignments: ($) => series_of($.use_assignment, ","),
use_assignment: ($) => seq($._pattern, optional($._type_annotation)),
assert: ($) => seq("assert", $._assignment),
boolean_negation: ($) => seq("!", $._expression_unit),
integer_negation: ($) => seq("-", $._expression_unit),

@ -20,28 +20,40 @@ use x : OfType <- f()
(identifier)
(arguments)))
(use
(identifier)
(use_assignments
(use_assignment
(identifier)))
(function_call
(identifier)
(arguments)))
(use
(identifier)
(identifier)
(identifier)
(identifier)
(identifier)
(use_assignments
(use_assignment
(identifier))
(use_assignment
(identifier))
(use_assignment
(identifier))
(use_assignment
(identifier))
(use_assignment
(identifier)))
(function_call
(identifier)
(arguments)))
(use
(tuple_pattern
(identifier)
(identifier))
(use_assignments
(use_assignment
(tuple_pattern
(identifier)
(identifier))))
(identifier))
(use
(identifier)
(type
(type_identifier))
(function_call
(use_assignments
(use_assignment
(identifier)
(arguments))))
(type
(type_identifier))))
(function_call
(identifier)
(arguments))))