mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
merge revision(s) 127325a4ba
: [Backport #21117]
[ruby/prism] No writing to numbered parameters
Fixes [Bug #21117]
19d4bab5a0
This commit is contained in:
parent
e3b16320e6
commit
d3fc56dcfa
7 changed files with 30 additions and 3 deletions
|
@ -63,7 +63,7 @@ module Prism
|
|||
|
||||
class Node
|
||||
def newline_flag? # :nodoc:
|
||||
@newline_flag ? true : false
|
||||
!!defined?(@newline_flag)
|
||||
end
|
||||
|
||||
def newline_flag!(lines) # :nodoc:
|
||||
|
|
|
@ -21058,6 +21058,11 @@ parse_expression_infix(pm_parser_t *parser, pm_node_t *node, pm_binding_power_t
|
|||
return result;
|
||||
}
|
||||
case PM_LOCAL_VARIABLE_READ_NODE: {
|
||||
if (pm_token_is_numbered_parameter(node->location.start, node->location.end)) {
|
||||
PM_PARSER_ERR_FORMAT(parser, node->location.start, node->location.end, PM_ERR_PARAMETER_NUMBERED_RESERVED, node->location.start);
|
||||
parse_target_implicit_parameter(parser, node);
|
||||
}
|
||||
|
||||
pm_local_variable_read_node_t *cast = (pm_local_variable_read_node_t *) node;
|
||||
parser_lex(parser);
|
||||
|
||||
|
@ -21176,6 +21181,11 @@ parse_expression_infix(pm_parser_t *parser, pm_node_t *node, pm_binding_power_t
|
|||
return result;
|
||||
}
|
||||
case PM_LOCAL_VARIABLE_READ_NODE: {
|
||||
if (pm_token_is_numbered_parameter(node->location.start, node->location.end)) {
|
||||
PM_PARSER_ERR_FORMAT(parser, node->location.start, node->location.end, PM_ERR_PARAMETER_NUMBERED_RESERVED, node->location.start);
|
||||
parse_target_implicit_parameter(parser, node);
|
||||
}
|
||||
|
||||
pm_local_variable_read_node_t *cast = (pm_local_variable_read_node_t *) node;
|
||||
parser_lex(parser);
|
||||
|
||||
|
@ -21304,6 +21314,11 @@ parse_expression_infix(pm_parser_t *parser, pm_node_t *node, pm_binding_power_t
|
|||
return result;
|
||||
}
|
||||
case PM_LOCAL_VARIABLE_READ_NODE: {
|
||||
if (pm_token_is_numbered_parameter(node->location.start, node->location.end)) {
|
||||
PM_PARSER_ERR_FORMAT(parser, node->location.start, node->location.end, PM_ERR_PARAMETER_NUMBERED_RESERVED, node->location.start);
|
||||
parse_target_implicit_parameter(parser, node);
|
||||
}
|
||||
|
||||
pm_local_variable_read_node_t *cast = (pm_local_variable_read_node_t *) node;
|
||||
parser_lex(parser);
|
||||
|
||||
|
|
3
test/prism/errors/numbered_and_write.txt
Normal file
3
test/prism/errors/numbered_and_write.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
tap { _1 &&= 1 }
|
||||
^~ _1 is reserved for numbered parameters
|
||||
|
3
test/prism/errors/numbered_operator_write.txt
Normal file
3
test/prism/errors/numbered_operator_write.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
tap { _1 += 1 }
|
||||
^~ _1 is reserved for numbered parameters
|
||||
|
3
test/prism/errors/numbered_or_write.txt
Normal file
3
test/prism/errors/numbered_or_write.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
tap { _1 ||= 1 }
|
||||
^~ _1 is reserved for numbered parameters
|
||||
|
|
@ -14,7 +14,10 @@ module Prism
|
|||
"targeting_numbered_parameter.txt",
|
||||
"defining_numbered_parameter.txt",
|
||||
"defining_numbered_parameter_2.txt",
|
||||
"numbered_parameters_in_block_arguments.txt"
|
||||
"numbered_parameters_in_block_arguments.txt",
|
||||
"numbered_and_write.txt",
|
||||
"numbered_or_write.txt",
|
||||
"numbered_operator_write.txt"
|
||||
]
|
||||
end
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
|
||||
#define RUBY_VERSION_TEENY 1
|
||||
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
|
||||
#define RUBY_PATCHLEVEL 25
|
||||
#define RUBY_PATCHLEVEL 26
|
||||
|
||||
#include "ruby/version.h"
|
||||
#include "ruby/internal/abi.h"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue