Skip to content

Commit a2f57ef

Browse files
committed
Reverse-sync numbered reference range handling
1 parent acfeade commit a2f57ef

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

src/prism.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6151,14 +6151,14 @@ pm_numbered_reference_read_node_number(pm_parser_t *parser, const pm_token_t *to
61516151
errno = 0;
61526152
unsigned long value = strtoul(digits, &endptr, 10);
61536153

6154-
if ((digits == endptr) || (*endptr != '\0') || (errno == ERANGE)) {
6154+
if ((digits == endptr) || (*endptr != '\0')) {
61556155
pm_parser_err(parser, start, end, PM_ERR_INVALID_NUMBER_DECIMAL);
61566156
value = 0;
61576157
}
61586158

61596159
xfree(digits);
61606160

6161-
if (value > NTH_REF_MAX) {
6161+
if ((errno == ERANGE) || (value > NTH_REF_MAX)) {
61626162
PM_PARSER_WARN_FORMAT(parser, start, end, PM_WARN_INVALID_NUMBERED_REFERENCE, (int) (length + 1), (const char *) token->start);
61636163
value = 0;
61646164
}

test/prism/result/warnings_test.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,10 @@ def test_keyword_eol
174174
assert_warning("if true\nelsif\nfalse; end", "end of line")
175175
end
176176

177+
def test_numbered_reference
178+
assert_warning("_ = _ = $999999999999999999999", "too big for a number variable, always nil")
179+
end
180+
177181
def test_shareable_constant_value
178182
assert_warning("foo # shareable_constant_value: none", "ignored")
179183
assert_warning("\v # shareable_constant_value: none", "ignored")

0 commit comments

Comments
 (0)