1
0
Fork 0
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:
Jeremy Evans 2019-07-30 16:15:19 -07:00
parent 170f4dbb9b
commit 0eeed5bcc5
Notes: git 2020-01-04 13:13:49 +09:00
7 changed files with 103 additions and 67 deletions

View file

@ -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