[#6660] Ruby on Neko ? — Nicolas Cannasse <ncannasse@...>

Hi folks,

14 messages 2005/11/19

[#6672] testing for hardlink with "test(?-, ...)" flawed on Windows — noreply@...

Bugs item #2858, was opened at 2005-11-20 16:35

13 messages 2005/11/20

[#6684] semenatics of if/unless/while statement modifiers — Stefan Kaes <skaes@...>

Hi all,

81 messages 2005/11/21
[#6685] Re: semenatics of if/unless/while statement modifiers — Mauricio Fern疣dez <mfp@...> 2005/11/22

On Tue, Nov 22, 2005 at 08:22:59AM +0900, Stefan Kaes wrote:

[#6686] Re: semenatics of if/unless/while statement modifiers — Stefan Kaes <skaes@...> 2005/11/22

Mauricio Fern疣dez wrote:

[#6687] Re: semenatics of if/unless/while statement modifiers — Eric Hodel <drbrain@...7.net> 2005/11/22

On Nov 21, 2005, at 4:37 PM, Stefan Kaes wrote:

[#6689] Re: semenatics of if/unless/while statement modifiers — Stefan Kaes <skaes@...> 2005/11/22

Eric Hodel wrote:

[#6693] Re: semenatics of if/unless/while statement modifiers — Yukihiro Matsumoto <matz@...> 2005/11/22

Hi,

[#6695] Re: semenatics of if/unless/while statement modifiers — Stefan Kaes <skaes@...> 2005/11/22

Yukihiro Matsumoto wrote:

[#6718] Re: semenatics of if/unless/while statement modifiers — mathew <meta@...> 2005/11/22

[#6722] Re: semenatics of if/unless/while statement modifiers — Stefan Kaes <skaes@...> 2005/11/22

mathew wrote:

[#6707] Re: semenatics of if/unless/while statement modifiers — "David A. Black" <dblack@...> 2005/11/22

Hi --

[#6708] Re: semenatics of if/unless/while statement modifiers — Stefan Kaes <skaes@...> 2005/11/22

David A. Black wrote:

[#6714] Re: semenatics of if/unless/while statement modifiers — "David A. Black" <dblack@...> 2005/11/22

Hi --

[#6717] Re: semenatics of if/unless/while statement modifiers — Stefan Kaes <skaes@...> 2005/11/22

David A. Black wrote:

[#6798] ruby 1.8.4 preview2 — Yukihiro Matsumoto <matz@...>

Hi,

37 messages 2005/11/30

Re: semenatics of if/unless/while statement modifiers

From: Stefan Kaes <skaes@...>
Date: 2005-11-22 14:11:50 UTC
List: ruby-core #6708
David A. Black wrote:

> Hi --
>
> On Tue, 22 Nov 2005, Stefan Kaes wrote:
>
>> Yukihiro Matsumoto wrote:
>>
>>> Hi,
>>>
>>> In message "Re: semenatics of if/unless/while statement modifiers"
>>>    on Tue, 22 Nov 2005 09:54:46 +0900, Stefan Kaes <skaes@gmx.net> 
>>> writes:
>>>
>>> |So this behaviour is caused by intermingling parsing with semantic 
>>> |analysis. Much like forward procedure declarations were required 
>>> for old |Pascal compilers.
>>>
>>> I believe it's a strict application of the "local variables should be
>>> assigned first" rule.  Not a compromise for the compiler.
>>>
>> It is definitely a compiler issue. Just like the recent discussion of 
>> the syntax for block parameters is only a compiler issue.
>>
>> In both forms, the v=expr gets evaluated first. So during evaluation, 
>> the assignment v=expr is always seen first, which means to me, a 
>> local variable gets created and assigned in the current binding. Any 
>> decent formal semantics writer would  like to treat both forms 
>> identically too, simply by stating that "expr1 if expr2" is 
>> equivalent to "if expr2 then expr1" end.
>>
>> If the resolution of local variable assignment vs. function call were 
>> implemented as a second pass on the abstract syntax tree or using 
>> some form of back patching, there would be no difference between the 
>> 2 forms to begin with.
>
>
> What would you want to happen here?
>
>   def x
>     puts "method x"
>   end
>
>   x if x = 1   # method x
>   puts x       # 1
>
That's easy to answer: the same thing that would happen for

  def x
    puts "method x"
  end

  if x = 1
    x
  end

  puts x

You could still use () to disambiguate between local x and method x.

But I certainly don't want to get this message:

  warning: found = in conditional, should be ==

This one would be better

  warning: found = in conditional, maybe you meant ==

-- stefan


In This Thread