From: "zverok (Victor Shepelev)" Date: 2022-06-28T07:25:04+00:00 Subject: [ruby-core:109079] [Ruby master Bug#18883] parse.y: trailing comma cannot coexist with star Issue #18883 has been updated by zverok (Victor Shepelev). As far as I understand, trailing comma is an equivalent of `*_` (unpack the rest and drop it): ```ruby x, = [1, 2, 3] # is the same as x, *_ = [1, 2, 3] # put 1 in x, ignore the rest, it is the shortest way to do it ``` So the fact that it is prohibited syntactically is in line with the fact that `*x, y, *z = ...` are also prohibited: Ruby can't handle two unpacks in one assignment. If this would be allowed, what would be the semantics of it?.. ```ruby *x, y, = 1, 2, 3 *x, y, *z = 1, 2, 3 ``` What it should put in `x` and `y`?.. ---------------------------------------- Bug #18883: parse.y: trailing comma cannot coexist with star https://bugs.ruby-lang.org/issues/18883#change-98223 * Author: qnighy (Masaki Hara) * Status: Open * Priority: Normal * ruby -v: ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux] * Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN ---------------------------------------- The following code is a syntax error: ```ruby *x, y, = 1, 2 # syntax error, unexpected '=' ``` although the following: ```ruby x, y = 1, 2 # OK x, y, = 1, 2 # OK *x, y = 1, 2 # OK # *x, y, = 1, 2 ``` In my understanding, the trailing comma does nothing unless the lhs becomes otherwise a single assignment. Therefore it is natural to allow the trailing comma whether `*` exists or not. -- https://bugs.ruby-lang.org/ Unsubscribe: