From: "James M. Lawrence" Date: 2011-02-01T11:31:13+09:00 Subject: [ruby-core:35027] [Ruby 1.9-Bug#4352][Open] [patch] Fix eval(s, b) backtrace; make eval(s, b) consistent with eval(s) --mimepart_4d47706d3477f_59895a773582422 Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Bug #4352: [patch] Fix eval(s, b) backtrace; make eval(s, b) consistent w= ith eval(s) http://redmine.ruby-lang.org/issues/show/4352 Author: James M. Lawrence Status: Open, Priority: Normal Category: core, Target version: 1.9.x ruby -v: ruby 1.9.3dev (2011-02-01 trunk 30751) [i386-darwin9.8.0] def ex_message begin yield rescue =3D> e p e.message end end ex_message { eval('raise') } ex_message { eval('raise', binding) } eval('def f ; end') p method(:f).source_location eval('def g ; end', binding) p method(:g).source_location ---- Without patch: "(eval):1:in `block in
': " "" ["(eval)", 1] ["eval_test.rb", 14] With patch: "(eval):1:in `block in
': " "(eval):1:in `block in
': " ["(eval)", 1] ["(eval)", 1] Knowing the line of an error inside eval is useful. Passing a binding shouldn't discard that information. Present behavior is even wrong: there's no line 10 in this file. ---- eval %{ = # .. code ... raise }, binding ---- Without patch: /Users/jlawrence/tmp/raiser.rb:10:in `
': unhandled exception from /Users/jlawrence/tmp/raiser.rb:7:in `eval' from /Users/jlawrence/tmp/raiser.rb:7:in `
' With patch: /Users/jlawrence/tmp/raiser.rb:7:in `eval': (eval):4:in `
': (Runti= meError) from /Users/jlawrence/tmp/raiser.rb:7:in `eval' from /Users/jlawrence/tmp/raiser.rb:7:in `
' ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4d47706d3477f_59895a773582422 Content-Type: text/plain; name=eval.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=eval.patch ZGlmZiAtLWdpdCBhL2Jvb3RzdHJhcHRlc3QvdGVzdF9ldmFsLnJiIGIvYm9v dHN0cmFwdGVzdC90ZXN0X2V2YWwucmIKaW5kZXggOWFlNTBhNi4uYzVhYjk1 MyAxMDA2NDQKLS0tIGEvYm9vdHN0cmFwdGVzdC90ZXN0X2V2YWwucmIKKysr IGIvYm9vdHN0cmFwdGVzdC90ZXN0X2V2YWwucmIKQEAgLTI4Nyw3ICsyODcs NyBAQCBhc3NlcnRfbm9ybWFsX2V4aXQgJXF7CiAgIGV2YWwoIiIsIG1ldGhv ZCg6cHJvYykuY2FsbCB7fS5iaW5kaW5nKQogfQogCi1hc3NlcnRfZXF1YWwg IiIsICVxeworYXNzZXJ0X2VxdWFsICIoZXZhbCk6MTppbiBgYmxvY2sgaW4g PG1haW4+JzogIiwgJXF7CiAgIGIgPSBiaW5kaW5nCiAgIDEwLnRpbWVzewog ICAgIGV2YWwoJycsIGIpCmRpZmYgLS1naXQgYS90ZXN0L3J1YnkvdGVzdF9l dmFsLnJiIGIvdGVzdC9ydWJ5L3Rlc3RfZXZhbC5yYgppbmRleCAyOTkxNjVm Li5mYWE0YTU3IDEwMDY0NAotLS0gYS90ZXN0L3J1YnkvdGVzdF9ldmFsLnJi CisrKyBiL3Rlc3QvcnVieS90ZXN0X2V2YWwucmIKQEAgLTQzMCw0ICs0MzAs MjggQEAgY2xhc3MgVGVzdEV2YWwgPCBUZXN0OjpVbml0OjpUZXN0Q2FzZQog ICAgIHJlc3VsdCA9IGZvby5pbnN0YW5jZV9ldmFsKCZmb29fcHIpCiAgICAg YXNzZXJ0X2VxdWFsKDEsIHJlc3VsdCwgJ0J1ZyAjMzc4NiwgQnVnICMzODYw LCBbcnVieS1jb3JlOjMyNTAxXScpCiAgIGVuZAorCisgIGRlZiBleGNlcHRp b25fbWVzc2FnZQorICAgIGJlZ2luCisgICAgICB5aWVsZAorICAgIHJlc2N1 ZSA9PiBlCisgICAgICBlLm1lc3NhZ2UKKyAgICBlbmQKKyAgZW5kCisgIAor ICBkZWYgdGVzdF9leGNlcHRpb24KKyAgICBtc2cgPSAiKGV2YWwpOjE6aW4g YGJsb2NrIGluIHRlc3RfZXhjZXB0aW9uJzogIgorICAgIGFzc2VydF9lcXVh bCBtc2csIGV4Y2VwdGlvbl9tZXNzYWdlIHsgZXZhbCgncmFpc2UnKSB9Cisg ICAgYXNzZXJ0X2VxdWFsIG1zZywgZXhjZXB0aW9uX21lc3NhZ2UgeyBldmFs KCdyYWlzZScsIGJpbmRpbmcpIH0KKyAgZW5kCisKKyAgZGVmIHRlc3Rfc291 cmNlX2xvY2F0aW9uCisgICAgYyA9IENsYXNzLm5ldyBkbworICAgICAgZXZh bCgnZGVmIGYgOyBlbmQnKSA7CisgICAgICBldmFsKCdkZWYgZyA7IGVuZCcs IGJpbmRpbmcpCisgICAgZW5kCisgICAgbG9jID0gWyIoZXZhbCkiLCAxXQor ICAgIGFzc2VydF9lcXVhbCBsb2MsIGMuaW5zdGFuY2VfbWV0aG9kKDpmKS5z b3VyY2VfbG9jYXRpb24KKyAgICBhc3NlcnRfZXF1YWwgbG9jLCBjLmluc3Rh bmNlX21ldGhvZCg6Zykuc291cmNlX2xvY2F0aW9uCisgIGVuZAogZW5kCmRp ZmYgLS1naXQgYS92bV9ldmFsLmMgYi92bV9ldmFsLmMKaW5kZXggMGRjYmFm YS4uZGYzODQ2ZCAxMDA2NDQKLS0tIGEvdm1fZXZhbC5jCisrKyBiL3ZtX2V2 YWwuYwpAQCAtOTc3LDEwICs5NzcsNiBAQCBldmFsX3N0cmluZ193aXRoX2Ny ZWYoVkFMVUUgc2VsZiwgVkFMVUUgc3JjLCBWQUxVRSBzY29wZSwgTk9ERSAq Y3JlZiwgY29uc3QgY2hhcgogCSAgICBpZiAocmJfb2JqX2lzX2tpbmRfb2Yo c2NvcGUsIHJiX2NCaW5kaW5nKSkgewogCQlHZXRCaW5kaW5nUHRyKHNjb3Bl LCBiaW5kKTsKIAkJZW52dmFsID0gYmluZC0+ZW52OwotCQlpZiAoc3RyY21w KGZpbGUsICIoZXZhbCkiKSA9PSAwICYmIGJpbmQtPmZpbGVuYW1lICE9IFFu aWwpIHsKLQkJICAgIGZpbGUgPSBSU1RSSU5HX1BUUihiaW5kLT5maWxlbmFt ZSk7Ci0JCSAgICBsaW5lID0gYmluZC0+bGluZV9ubzsKLQkJfQogCSAgICB9 CiAJICAgIGVsc2UgewogCQlyYl9yYWlzZShyYl9lVHlwZUVycm9yLAo= --mimepart_4d47706d3477f_59895a773582422--