mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
erb.rb: frozen-string-literal safe
* lib/erb.rb (ERB#set_eoutvar): explicitly make mutable string as a buffer to make ERB work with --enable-frozen-string-literal. [ruby-core:73561] [Bug #12031] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53682 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
1c3a3f47dc
commit
c55ad90a6e
3 changed files with 18 additions and 3 deletions
|
@ -1,3 +1,9 @@
|
|||
Fri Jan 29 11:13:33 2016 Jeremy Evans <code@jeremyevans.net>
|
||||
|
||||
* lib/erb.rb (ERB#set_eoutvar): explicitly make mutable string as
|
||||
a buffer to make ERB work with --enable-frozen-string-literal.
|
||||
[ruby-core:73561] [Bug #12031]
|
||||
|
||||
Fri Jan 29 10:44:56 2016 SHIBATA Hiroshi <hsbt@ruby-lang.org>
|
||||
|
||||
* lib/net/http/header.rb: Warn nil variable on HTTP Header.
|
||||
|
|
|
@ -280,7 +280,7 @@ class ERB
|
|||
# ERB#src:
|
||||
#
|
||||
# compiler = ERB::Compiler.new('<>')
|
||||
# compiler.pre_cmd = ["_erbout=''"]
|
||||
# compiler.pre_cmd = ["_erbout=String.new"]
|
||||
# compiler.put_cmd = "_erbout.concat"
|
||||
# compiler.insert_cmd = "_erbout.concat"
|
||||
# compiler.post_cmd = ["_erbout"]
|
||||
|
@ -291,7 +291,7 @@ class ERB
|
|||
# <i>Generates</i>:
|
||||
#
|
||||
# #coding:UTF-8
|
||||
# _erbout=''; _erbout.concat "Got "; _erbout.concat(( obj ).to_s); _erbout.concat "!\n"; _erbout
|
||||
# _erbout=String.new; _erbout.concat "Got "; _erbout.concat(( obj ).to_s); _erbout.concat "!\n"; _erbout
|
||||
#
|
||||
# By default the output is sent to the print method. For example:
|
||||
#
|
||||
|
@ -860,7 +860,7 @@ class ERB
|
|||
def set_eoutvar(compiler, eoutvar = '_erbout')
|
||||
compiler.put_cmd = "#{eoutvar}.concat"
|
||||
compiler.insert_cmd = "#{eoutvar}.concat"
|
||||
compiler.pre_cmd = ["#{eoutvar} = ''"]
|
||||
compiler.pre_cmd = ["#{eoutvar} = String.new"]
|
||||
compiler.post_cmd = ["#{eoutvar}.force_encoding(__ENCODING__)"]
|
||||
end
|
||||
|
||||
|
|
|
@ -534,6 +534,15 @@ EOS
|
|||
EOS
|
||||
assert_equal(ans, extended_erb.new(src).result)
|
||||
end
|
||||
|
||||
def test_frozen_string_literal
|
||||
bug12031 = '[ruby-core:73561] [Bug #12031]'
|
||||
e = @erb.new("<%#encoding: us-ascii%>a")
|
||||
e.src.sub!(/\A#(?:-\*-)?(.*)(?:-\*-)?/) {
|
||||
'# -*- \1; frozen-string-literal: true -*-'
|
||||
}
|
||||
assert_equal("a", e.result, bug12031)
|
||||
end
|
||||
end
|
||||
|
||||
class TestERBCoreWOStrScan < TestERBCore
|
||||
|
|
Loading…
Add table
Reference in a new issue