[#114062] [Ruby master Bug#19751] Ruby 3.2.2 Fails to Compile from Source — "martin_vahi (Martin Vahi) via ruby-core" <ruby-core@...>

Issue #19751 has been reported by martin_vahi (Martin Vahi).

9 messages 2023/07/01

[#114064] [Ruby master Feature#19752] Allow `--backtrace-limit` to appear in RUBYOPT — "tomstuart (Tom Stuart) via ruby-core" <ruby-core@...>

SXNzdWUgIzE5NzUyIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IHRvbXN0dWFydCAoVG9tIFN0dWFydCku

8 messages 2023/07/01

[#114070] [Ruby master Bug#19753] IO::Buffer#get_string can't handle negative offset — "noteflakes (Sharon Rosner) via ruby-core" <ruby-core@...>

Issue #19753 has been reported by noteflakes (Sharon Rosner).

10 messages 2023/07/03

[#114072] [Ruby master Bug#19754] `IO::Buffer#get_string` raises unsuitable exception for too large offset — "nobu (Nobuyoshi Nakada) via ruby-core" <ruby-core@...>

Issue #19754 has been reported by nobu (Nobuyoshi Nakada).

7 messages 2023/07/03

[#114074] [Ruby master Feature#19755] Module#class_eval and Binding#eval use caller location by default — "byroot (Jean Boussier) via ruby-core" <ruby-core@...>

Issue #19755 has been reported by byroot (Jean Boussier).

15 messages 2023/07/03

[#114080] [Ruby master Bug#19756] URI::HTTP.build does not accept a host of `_gateway`, but `URI.parse` will. — "postmodern (Hal Brodigan) via ruby-core" <ruby-core@...>

Issue #19756 has been reported by postmodern (Hal Brodigan).

9 messages 2023/07/04

[#114168] [Ruby master Misc#19766] DevMeeting-2023-08-24 — "mame (Yusuke Endoh) via ruby-core" <ruby-core@...>

Issue #19766 has been reported by mame (Yusuke Endoh).

9 messages 2023/07/13

[#114222] [Ruby master Misc#19772] API Naming for YARP compiler — "jemmai (Jemma Issroff) via ruby-core" <ruby-core@...>

Issue #19772 has been reported by jemmai (Jemma Issroff).

31 messages 2023/07/17

[#114276] [Ruby master Bug#19784] String#delete_prefix! problem — "inversion (Yura Babak) via ruby-core" <ruby-core@...>

Issue #19784 has been reported by inversion (Yura Babak).

10 messages 2023/07/25

[#114309] [Ruby master Feature#19787] Add Enumerable#uniq_map, Enumerable::Lazy#uniq_map, Array#uniq_map and Array#uniq_map! — "joshuay03 (Joshua Young) via ruby-core" <ruby-core@...>

Issue #19787 has been reported by joshuay03 (Joshua Young).

7 messages 2023/07/29

[#114319] [Ruby master Feature#19790] Optionally write Ruby crash reports into a file rather than STDERR — "byroot (Jean Boussier) via ruby-core" <ruby-core@...>

SXNzdWUgIzE5NzkwIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGJ5cm9vdCAoSmVhbiBCb3Vzc2llciku

13 messages 2023/07/31

[ruby-core:114271] [Ruby master Bug#19782] Ruby operators precedence inconsistency

From: "sawa (Tsuyoshi Sawada) via ruby-core" <ruby-core@...>
Date: 2023-07-24 01:12:05 UTC
List: ruby-core #114271
Issue #19782 has been updated by sawa (Tsuyoshi Sawada).


In general, precedence comes into play when an expression is ambiguous. An expression is ambiguous when there is more than one (grammatical) parse. `(a && b) = c` is not a grammatical parse of `a && b = c`; only `a && (b = c)` is. Hence, this expression is not ambiguous, and precedence is irrelevant here.

----------------------------------------
Bug #19782: Ruby operators precedence inconsistency
https://bugs.ruby-lang.org/issues/19782#change-103961

* Author: hurricup (Alexandr Evstigneev)
* Status: Open
* Priority: Normal
* Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN
----------------------------------------
Unfortunately I could not find a good documentation regarding ruby operators precedence and associativity, but according to https://ruby-doc.org/3.2.2/syntax/precedence_rdoc.html
`&&` has higher precedence than assignment.
Meaning that
`a && b = c` would be treated as `(a && b) = c` which makes a little sense, but still.
But ruby 3.2.2 shows that it works as `a && (b = c)` (if I read it right):

```
def moo(a,b,c)
  if a && b = c

  end
end

puts RubyVM::InstructionSequence.of(method :moo).disasm
```

Gives me
```
== disasm: #<ISeq:moo@/home/hurricup/Projects/untitled/test.rb:1 (1,0)-(5,3)> (catch: false)
local table (size: 3, argc: 3 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 3] a@0<Arg>   [ 2] b@1<Arg>   [ 1] c@2<Arg>
0000 getlocal_WC_0                          a@0                       (   2)[LiCa]
0002 branchunless                           13
0004 getlocal_WC_0                          c@2
0006 dup
0007 setlocal_WC_0                          b@1
0009 branchunless                           13
0011 putnil
0012 leave                                                            (   5)[Re]
0013 putnil                                                           (   2)
0014 leave                                                            (   5)[Re]
```

For example, perl has well documentation and same rules regarding these two ops: https://perldoc.perl.org/perlop#Operator-Precedence-and-Associativity
And if you try:
```
use v5.38;

my($var1, $var2, $var3) = (1,2,3);

$var1 && $var2 = $var3;

say $var1, $var2, $var3;
```

You will get expected:
```
Can't modify logical and (&&) in scalar assignment at /home/hurricup/Projects/untitled/test.pl line 5, near "$var3;"
Execution of /home/hurricup/Projects/untitled/test.pl aborted due to compilation errors.
```


Could you please clarify this?
Also would be really nice to have documentation on how precedence work, including calls without parens, like `some.thing expr` which precedence is consumed by `expr` here?





-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/

In This Thread