Issue #12387 has been updated by Nobuyoshi Nakada. Status changed from Open to Assigned Assignee set to Kazuki Yamaguchi Seems OK. ---------------------------------------- Feature #12387: ripper: new parser event for kwrest parameter https://bugs.ruby-lang.org/issues/12387#change-62518 * Author: Kazuki Yamaguchi * Status: Assigned * Priority: Normal * Assignee: Kazuki Yamaguchi * Target version: ---------------------------------------- Ripper does not handle unnamed kwrest parameter well. ~~~ruby $ ruby -rpp -rripper -e'pp Ripper.sexp("def a(*x, **y) end")' [:program, [[:def, [:@ident, "a", [1, 4]], [:paren, [:params, nil, nil, [:rest_param, [:@ident, "x", [1, 7]]], nil, nil, [:@ident, "y", [1, 12]], nil]], [:bodystmt, [[:void_stmt]], nil, nil, nil]]]] $ ruby -rpp -rripper -e'pp Ripper.sexp("def a(*, **) end")' [:program, [[:def, [:@ident, "a", [1, 4]], [:paren, [:params, nil, nil, [:rest_param, nil], nil, nil, 183, nil]], [:bodystmt, [[:void_stmt]], nil, nil, nil]]]] ~~~ I expected something meaningful instead of the mysterious number 183. This comes from internal_id() (in parse.y). There is already 'rest_param' paraer event for non-keyword rest params, so I suggest adding new event 'kwrest_param'. They should work in the same way. I've attached a patch. With this the parse result will be: ~~~ruby $ ruby -rpp -rripper -e'pp Ripper.sexp("def a(*x, **y) end")' [:program, [[:def, [:@ident, "a", [1, 4]], [:paren, [:params, nil, nil, [:rest_param, [:@ident, "x", [1, 7]]], nil, nil, [:kwrest_param, [:@ident, "y", [1, 12]]], nil]], [:bodystmt, [[:void_stmt]], nil, nil, nil]]]] $ ruby -rpp -rripper -e'pp Ripper.sexp("def a(*, **) end")' [:program, [[:def, [:@ident, "a", [1, 4]], [:paren, [:params, nil, nil, [:rest_param, nil], nil, nil, [:kwrest_param, nil], nil]], [:bodystmt, [[:void_stmt]], nil, nil, nil]]]] ~~~ ---Files-------------------------------- 0001-ripper-dispatch-new-parser-event-kwrest_param-on-f_k.patch (3.6 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>