summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2026-04-09 13:16:57 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2026-04-09 13:32:31 +0900
commit4644e4f2fafe45e2c49f18bc9712d0f5fff3d341 (patch)
treeb2eb7782c549ba9a7e236dea6f8c9ef0f0527af2
parentf4b5566d0976f55b1fda8cea943283901a3fdc72 (diff)
[Bug #21986] Fix location of numeric literal
When checking for suffixes, do not flush the numeric literal token even if no suffix is found.
-rw-r--r--parse.y1
-rw-r--r--test/ruby/test_ast.rb8
2 files changed, 8 insertions, 1 deletions
diff --git a/parse.y b/parse.y
index 2c8be06373..a92faab27f 100644
--- a/parse.y
+++ b/parse.y
@@ -8927,7 +8927,6 @@ number_literal_suffix(struct parser_params *p, int mask)
}
if (!ISASCII(c) || ISALPHA(c) || c == '_') {
p->lex.pcur = lastp;
- literal_flush(p, p->lex.pcur);
return 0;
}
pushback(p, c);
diff --git a/test/ruby/test_ast.rb b/test/ruby/test_ast.rb
index 2ba87c6080..5d95dcd46f 100644
--- a/test/ruby/test_ast.rb
+++ b/test/ruby/test_ast.rb
@@ -1751,6 +1751,14 @@ dummy
assert_locations(node.children.last.locations, [[1, 0, 1, 2]])
end
+ def test_numeric_location_with_nonsuffix
+ node = ast_parse("1if true")
+ assert_locations(node.children.last.children[1].locations, [[1, 0, 1, 1]])
+
+ node = ast_parse("1q", error_tolerant: true)
+ assert_locations(node.children.last.locations, [[1, 0, 1, 1]])
+ end
+
private
def ast_parse(src, **options)
begin