mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Make eval(code, binding) use (eval) as __FILE__ and 1 as __LINE__
This removes the warning that was added in
3802fb92ff
, and switches the behavior
so that the eval does not use the binding's __FILE__ and __LINE__
implicitly.
Fixes [Bug #4352]
This commit is contained in:
parent
170f4dbb9b
commit
0eeed5bcc5
Notes:
git
2020-01-04 13:13:49 +09:00
7 changed files with 103 additions and 67 deletions
|
@ -159,13 +159,27 @@ describe "Kernel#eval" do
|
|||
end
|
||||
end
|
||||
|
||||
it "uses the filename of the binding if none is provided" do
|
||||
eval("__FILE__").should == "(eval)"
|
||||
suppress_warning {eval("__FILE__", binding)}.should == __FILE__
|
||||
eval("__FILE__", binding, "success").should == "success"
|
||||
suppress_warning {eval("eval '__FILE__', binding")}.should == "(eval)"
|
||||
suppress_warning {eval("eval '__FILE__', binding", binding)}.should == __FILE__
|
||||
suppress_warning {eval("eval '__FILE__', binding", binding, 'success')}.should == 'success'
|
||||
ruby_version_is ""..."2.8" do
|
||||
it "uses the filename of the binding if none is provided" do
|
||||
eval("__FILE__").should == "(eval)"
|
||||
suppress_warning {eval("__FILE__", binding)}.should == __FILE__
|
||||
eval("__FILE__", binding, "success").should == "success"
|
||||
suppress_warning {eval("eval '__FILE__', binding")}.should == "(eval)"
|
||||
suppress_warning {eval("eval '__FILE__', binding", binding)}.should == __FILE__
|
||||
suppress_warning {eval("eval '__FILE__', binding", binding, 'success')}.should == 'success'
|
||||
end
|
||||
end
|
||||
|
||||
ruby_version_is "2.8" do
|
||||
it "uses (eval) filename if none is provided" do
|
||||
eval("__FILE__").should == "(eval)"
|
||||
eval("__FILE__", binding).should == "(eval)"
|
||||
eval("__FILE__", binding, "success").should == "success"
|
||||
eval("eval '__FILE__', binding").should == "(eval)"
|
||||
eval("eval '__FILE__', binding", binding).should == "(eval)"
|
||||
eval("eval '__FILE__', binding", binding, 'success').should == '(eval)'
|
||||
eval("eval '__FILE__', binding, 'success'", binding).should == 'success'
|
||||
end
|
||||
end
|
||||
|
||||
# Found via Rubinius bug github:#149
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue