From 3a3fcf56d0ab6b6887024ce7eba0676bae0ce13d Mon Sep 17 00:00:00 2001 From: Kevin Newton Date: Wed, 3 Jan 2024 12:05:15 -0500 Subject: [PATCH] [ruby/prism] Fix rational when parsing non decimal integer https://github.com/ruby/prism/commit/75d4331f7f --- lib/prism/node_ext.rb | 2 +- test/prism/ruby_api_test.rb | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/prism/node_ext.rb b/lib/prism/node_ext.rb index 8c09632345..974052e84b 100644 --- a/lib/prism/node_ext.rb +++ b/lib/prism/node_ext.rb @@ -81,7 +81,7 @@ module Prism class RationalNode < Node # Returns the value of the node as a Ruby Rational. def value - Rational(slice.chomp("r")) + Rational(numeric.is_a?(IntegerNode) && !numeric.decimal? ? numeric.value : slice.chomp("r")) end end diff --git a/test/prism/ruby_api_test.rb b/test/prism/ruby_api_test.rb index 7bb80b481a..cf7ea437cf 100644 --- a/test/prism/ruby_api_test.rb +++ b/test/prism/ruby_api_test.rb @@ -57,6 +57,8 @@ module Prism assert_equal 0.5r, parse_expression("0.5r").value assert_equal 42ri, parse_expression("42ri").value assert_equal 0.5ri, parse_expression("0.5ri").value + assert_equal 0xFFr, parse_expression("0xFFr").value + assert_equal 0xFFri, parse_expression("0xFFri").value end def test_location_join