From 55b7121358e2bed9b90001405b651f57fafbeaad Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Tue, 9 Jan 2024 10:52:23 -0500 Subject: [PRISM] Frozen string literals should be fstrings Frozen string literals should not just be frozen, but deduplicated as an fstring so that two string literals with the same contents are the exact same object. Fixes ruby/prism#2095. --- test/ruby/test_compile_prism.rb | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'test/ruby') diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb index 5482a1529d..b02c1d09a3 100644 --- a/test/ruby/test_compile_prism.rb +++ b/test/ruby/test_compile_prism.rb @@ -638,14 +638,23 @@ module Prism assert_prism_eval('"pit"') assert_prism_eval('"a".frozen?') - frozen_source = <<-CODE - # frozen_string_literal: true - "a".frozen? - CODE - ruby_eval = RubyVM::InstructionSequence.compile(frozen_source).eval - prism_eval = RubyVM::InstructionSequence.compile_prism(frozen_source).eval - - assert_equal ruby_eval, prism_eval + [ + # Test that string literal is frozen + <<~RUBY, + # frozen_string_literal: true + "a".frozen? + RUBY + # Test that two string literals with the same contents are the same string + <<~RUBY, + # frozen_string_literal: true + "hello".equal?("hello") + RUBY + ].each do |src| + ruby_eval = RubyVM::InstructionSequence.compile(src).eval + prism_eval = RubyVM::InstructionSequence.compile_prism(src).eval + + assert_equal ruby_eval, prism_eval, src + end end def test_SymbolNode -- cgit v1.2.3