Skip to content

Commit 8b1d333

Browse files
committed
fix: simplify function parameters
1 parent 710796b commit 8b1d333

File tree

1 file changed

+30
-48
lines changed

1 file changed

+30
-48
lines changed

grammar.js

Lines changed: 30 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ module.exports = grammar({
6363
$.expression,
6464
$.primary_expression,
6565
$.pattern,
66-
$.parameter,
6766
],
6867

6968
externals: $ => [
@@ -422,12 +421,36 @@ module.exports = grammar({
422421
),
423422

424423
parameters: $ => seq(
425-
'(',
426-
optional($._parameters),
427-
')',
424+
commaSep1(choice(
425+
$.parameter,
426+
alias($._lambda_parameter, $.parameter),
427+
$.keyword_separator,
428+
$.positional_separator,
429+
)),
430+
optional(','),
428431
),
429432

430-
lambda_parameters: $ => $._parameters,
433+
parameter: $ => prec(PREC.typed_parameter, seq(
434+
optional(choice('*', '**')),
435+
field('name', $.identifier),
436+
optional(seq(
437+
":",
438+
field('type', $.expression),
439+
)),
440+
optional(seq(
441+
"=",
442+
field('value', $.expression),
443+
)),
444+
)),
445+
446+
_lambda_parameter: $ => seq(
447+
optional(choice('*', '**')),
448+
field('name', $.identifier),
449+
optional(seq(
450+
"=",
451+
field('value', $.expression),
452+
)),
453+
),
431454

432455
list_splat: $ => seq(
433456
'*',
@@ -633,28 +656,11 @@ module.exports = grammar({
633656

634657
// Patterns
635658

636-
_parameters: $ => seq(
637-
commaSep1($.parameter),
638-
optional(','),
639-
),
640-
641659
_patterns: $ => seq(
642660
commaSep1($.pattern),
643661
optional(','),
644662
),
645663

646-
parameter: $ => choice(
647-
$.identifier,
648-
$.typed_parameter,
649-
$.default_parameter,
650-
$.typed_default_parameter,
651-
$.list_splat_pattern,
652-
$.tuple_pattern,
653-
$.keyword_separator,
654-
$.positional_separator,
655-
$.dictionary_splat_pattern,
656-
),
657-
658664
pattern: $ => choice(
659665
$.identifier,
660666
$.keyword_identifier,
@@ -677,20 +683,6 @@ module.exports = grammar({
677683
']',
678684
),
679685

680-
default_parameter: $ => seq(
681-
field('name', choice($.identifier, $.tuple_pattern)),
682-
'=',
683-
field('value', $.expression),
684-
),
685-
686-
typed_default_parameter: $ => prec(PREC.typed_parameter, seq(
687-
field('name', $.identifier),
688-
':',
689-
field('type', $.type),
690-
'=',
691-
field('value', $.expression),
692-
)),
693-
694686
list_splat_pattern: $ => seq(
695687
'*',
696688
choice($.identifier, $.keyword_identifier, $.subscript, $.attribute),
@@ -832,14 +824,14 @@ module.exports = grammar({
832824

833825
lambda: $ => prec(PREC.lambda, seq(
834826
'lambda',
835-
field('parameters', optional($.lambda_parameters)),
827+
field('parameters', optional($.parameters)),
836828
':',
837829
field('body', $.expression),
838830
)),
839831

840832
lambda_within_for_in_clause: $ => seq(
841833
'lambda',
842-
field('parameters', optional($.lambda_parameters)),
834+
field('parameters', optional($.parameters)),
843835
':',
844836
field('body', $._expression_within_for_in_clause),
845837
),
@@ -932,16 +924,6 @@ module.exports = grammar({
932924
)),
933925
)),
934926

935-
typed_parameter: $ => prec(PREC.typed_parameter, seq(
936-
choice(
937-
$.identifier,
938-
$.list_splat_pattern,
939-
$.dictionary_splat_pattern,
940-
),
941-
':',
942-
field('type', $.type),
943-
)),
944-
945927
type: $ => choice(
946928
prec(1, $.expression),
947929
$.splat_type,

0 commit comments

Comments
 (0)