diff --git a/lib/erb.rb b/lib/erb.rb index 445d479..1bc6da6 100644 --- a/lib/erb.rb +++ b/lib/erb.rb @@ -833,6 +833,7 @@ def initialize(str, trim_mode: nil, eoutvar: '_erbout') compiler = make_compiler(trim_mode) set_eoutvar(compiler, eoutvar) @src, @encoding, @frozen_string = *compiler.compile(str) + @src.freeze @filename = nil @lineno = 0 @_init = self.class.singleton_class diff --git a/test/erb/test_erb.rb b/test/erb/test_erb.rb index 09496d3..f6133b1 100644 --- a/test/erb/test_erb.rb +++ b/test/erb/test_erb.rb @@ -598,10 +598,10 @@ def stags def test_frozen_string_literal bug12031 = '[ruby-core:73561] [Bug #12031]' e = @erb.new("<%#encoding: us-ascii%>a") - e.src.sub!(/\A#(?:-\*-)?(.*)(?:-\*-)?/) { + src = e.src.sub(/\A#(?:-\*-)?(.*)(?:-\*-)?/) { '# -*- \1; frozen-string-literal: true -*-' } - assert_equal("a", e.result, bug12031) + assert_equal("a", eval(src), bug12031) %w(false true).each do |flag| erb = @erb.new("<%#frozen-string-literal: #{flag}%><%=''.frozen?%>")