[#71439] [Ruby trunk - Feature #11339] [PATCH] io.c: avoid kwarg parsing in C API — matz@...
Issue #11339 has been updated by Yukihiro Matsumoto.
7 messages
2015/11/11
[#71473] Re: [Ruby trunk - Feature #11339] [PATCH] io.c: avoid kwarg parsing in C API
— Eric Wong <normalperson@...>
2015/11/13
Entire series for sockets
[#71450] Ruby 2.3.0-preview1 Released — "NARUSE, Yui" <naruse@...>
Hi,
5 messages
2015/11/11
[#71617] [Ruby trunk - Feature #11664] [PATCH] introduce rb_autoload_value to replace rb_autoload — nobu@...
Issue #11664 has been updated by Nobuyoshi Nakada.
3 messages
2015/11/20
[#71721] [Ruby trunk - Feature #11741] Migrate Ruby to Git from Subversion — me@...
Issue #11741 has been updated by Jon Moss.
4 messages
2015/11/28
[ruby-core:71319] [Ruby trunk - Bug #10996] Inline if statements should hoist variables.
From:
josh.cheek@...
Date:
2015-11-03 22:34:10 UTC
List:
ruby-core #71319
Issue #10996 has been updated by Josh Cheek. Yukihiro Matsumoto wrote: > The fundamental rule is that local variables are defined by the first assignment. For consistency, I will not bend this rule for if modifiers. > > Matz. That's why it seems like this should be turned on, since it is assigned first. eg the if-statement body would work if it were dynamically accessed. ~~~ruby eval 'a' if a = 'A' # => "A" binding.local_variable_get 'b' if b = 'B' # => "B" ~~~ ---------------------------------------- Bug #10996: Inline if statements should hoist variables. https://bugs.ruby-lang.org/issues/10996#change-54694 * Author: Josh Cheek * Status: Rejected * Priority: Normal * Assignee: * ruby -v: ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- A multiline if statement hoists local variables to the parent scope. An inline if statement does not. We can see that in this first example, the `a` declared in the conditional is available both in the body and in the parent, after the if-statement is executed. ~~~ruby if a = 'A' a # => "A" end a # => "A" ~~~ However, when refactoring to an inline-if-statement, the variable is no longer available. ~~~ruby a if a = 'A' # ~> NameError: undefined local variable or method `a' for main:Object # ~> NameError # ~> undefined local variable or method `a' for main:Object # ~> # ~> /var/folders/7g/mbft22555w3_2nqs_h1kbglw0000gn/T/seeing_is_believing_temp_dir20150323-47886-ay5rau/program.rb:1:in `<main>' ~~~ Inline if statements should hoist variables, too. For both consistency and convenience. -- https://bugs.ruby-lang.org/