diff options
author | Noah Gibbs <noah.gibbs@shopify.com> | 2022-06-01 15:22:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-01 10:22:08 -0400 |
commit | 9d18661e1de053a9fecae7f4ab4ed41300537cec (patch) | |
tree | 8ca0ebd67c1e9d5c715f308b3658e7c8fc99d797 /bootstraptest | |
parent | 1177665e6224f8491db82997c8774e9485564e41 (diff) |
Revert incorrect string-guard optimisation. (#5969)
Also add jhawthorn's test to for this bug.
Fix String#to_s invalidation test
Notes
Notes:
Merged-By: maximecb <maximecb@ruby-lang.org>
Diffstat (limited to 'bootstraptest')
-rw-r--r-- | bootstraptest/test_yjit.rb | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/bootstraptest/test_yjit.rb b/bootstraptest/test_yjit.rb index 6d0ba93fc8..503af1ab80 100644 --- a/bootstraptest/test_yjit.rb +++ b/bootstraptest/test_yjit.rb @@ -1339,12 +1339,42 @@ assert_equal 'foo123', %q{ # test that invalidation of String#to_s doesn't crash assert_equal 'meh', %q{ + def inval_method + "".to_s + end + + inval_method + class String def to_s "meh" end end - "".to_s + + inval_method +} + +# test that overriding to_s on a String subclass isn't over-optimised +assert_equal 'meh', %q{ + class MyString < String + def to_s + "meh" + end + end + + def test_to_s(obj) + obj.to_s + end + + OBJ = MyString.new + + # Should return 'meh' both times + test_to_s("") + test_to_s("") + + # Can return '' if YJIT optimises String#to_s too aggressively + test_to_s(OBJ) + test_to_s(OBJ) } # test string interpolation with overridden to_s |