Skip to content

Commit ad92d05

Browse files
Magikdidi24Berthelot Samuel
authored andcommitted
fix function ruby > 3.0
1 parent ed17c67 commit ad92d05

File tree

5 files changed

+902679
-361072
lines changed

5 files changed

+902679
-361072
lines changed

grammar.js

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ const ALPHA_CHAR = /[^\x00-\x1F\s0-9:;`"'@$#.,|^&<=>+\-*/\\%?!~()\[\]{}]/;
3737
module.exports = grammar({
3838
name: 'ruby',
3939
inline: $ => [$._arg_rhs, $._call_operator],
40+
conflicts: $ => [
41+
[$._expression, $._chained_command_call],
42+
[$._pattern_expr_alt, $.alternative_pattern],
43+
[$._array_pattern_n, $.as_pattern, $._find_pattern_body],
44+
],
4045
externals: $ => [
4146
$._line_break,
4247
$._no_line_break,
@@ -159,7 +164,8 @@ module.exports = grammar({
159164
_method_rest: $ => seq(
160165
field('name', $._method_name),
161166
choice(
162-
$._body_expr,
167+
prec(2, $._body_expr),
168+
// with parameters
163169
seq(
164170
field('parameters', alias($.parameters, $.method_parameters)),
165171
choice(
@@ -168,6 +174,7 @@ module.exports = grammar({
168174
),
169175

170176
),
177+
// without parameters but with body
171178
seq(
172179
optional(
173180
field('parameters', alias($.bare_parameters, $.method_parameters)),
@@ -195,15 +202,16 @@ module.exports = grammar({
195202
),
196203
),
197204

198-
_body_expr: $ =>
205+
_body_expr: $ => prec.right(1,
199206
seq(
200207
'=',
201208
field('body',
202209
choice(
203-
$._arg,
204-
alias($.rescue_modifier_arg, $.rescue_modifier),
210+
$._expression,
211+
alias($.rescue_modifier_expression, $.rescue_modifier),
205212
)),
206213
),
214+
),
207215

208216

209217
parameters: $ => seq(
@@ -436,7 +444,7 @@ module.exports = grammar({
436444
$._pattern_expr_basic,
437445
),
438446

439-
alternative_pattern: $ => seq(field('alternatives', $._pattern_expr_basic), repeat1(seq('|', field('alternatives', $._pattern_expr_basic)))),
447+
alternative_pattern: $ => prec.right(seq(field('alternatives', $._pattern_expr_basic), repeat1(seq('|', field('alternatives', $._pattern_expr_basic))))),
440448

441449
_array_pattern_body: $ => choice(
442450
$._pattern_expr,
@@ -507,11 +515,11 @@ module.exports = grammar({
507515
const begin = field('begin', $._pattern_primitive);
508516
const end = field('end', $._pattern_primitive);
509517
const operator = field('operator', choice('..', '...'));
510-
return choice(
518+
return prec.right(choice(
511519
seq(begin, operator, end),
512520
seq(operator, end),
513521
seq(begin, operator),
514-
);
522+
));
515523
},
516524

517525
_pattern_primitive: $ => choice(
@@ -897,8 +905,7 @@ module.exports = grammar({
897905
const operator = field('operator', choice('..', '...'));
898906
return prec.right(PREC.RANGE, choice(
899907
seq(begin, operator, end),
900-
seq(operator, end),
901-
seq(begin, operator),
908+
seq(operator, end)
902909
));
903910
},
904911

0 commit comments

Comments
 (0)