From: nobu@... Date: 2016-08-09T06:59:22+00:00 Subject: [ruby-core:76778] [Ruby trunk Bug#12402][Assigned] Inline rescue behavior inconsistent for method calls with arguments and assignment Issue #12402 has been updated by Nobuyoshi Nakada. Description updated Status changed from Open to Assigned Assignee set to Nobuyoshi Nakada ---------------------------------------- Bug #12402: Inline rescue behavior inconsistent for method calls with arguments and assignment https://bugs.ruby-lang.org/issues/12402#change-60002 * Author: Ben Klang * Status: Assigned * Priority: Normal * Assignee: Nobuyoshi Nakada * ruby -v: 2.4.0 * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- In this example l'm intentionally passing bad data to `Date.parse` to trigger an exception. Depending on whether I use parenthesis in the method call, and whether I assign the result, I get different behavior for the inline rescue. Code: ~~~ruby var1 = "apple" var1 = Date.parse var1 rescue nil var2 = "apple" var2 = Date.parse(var2) rescue nil def example1(bar) Date.parse bar rescue nil end def example2(bar) bar = Date.parse bar rescue nil bar end def example3(bar) bar = Date.parse(bar) rescue nil bar end puts "Variable 1: #{var1.nil?}" puts "Variable 2: #{var2.nil?}" puts "Example method 1: #{example1("apple").nil?}" puts "Example method 2: #{example2("apple").nil?}" puts "Example method 3: #{example3("apple").nil?}" ~~~ I would expect all 5 outputs from the above script to return true. Example: ``` Variable 1: false Variable 2: true Example method 1: true Example method 2: false Example method 3: true ``` -- https://bugs.ruby-lang.org/ Unsubscribe: