From: merch-redmine@... Date: 2019-11-27T15:25:20+00:00 Subject: [ruby-core:95985] [Ruby master Feature#16364] Top-level ruby2_keywords Issue #16364 has been updated by jeremyevans0 (Jeremy Evans). I'm in favor of adding top level `ruby2_keywords`. ---------------------------------------- Feature #16364: Top-level ruby2_keywords https://bugs.ruby-lang.org/issues/16364#change-82818 * Author: mame (Yusuke Endoh) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- How about defining top-level ruby2_keywords? ``` #!/usr/bin/env ruby def foo(**kw) kw end ruby2_keywords def bar(*a) foo(*a) end bar(k:1) #=> {:k=>1} with no warnings in 2.7 ``` Currently, `Module#ruby2_keywords` is defined only in `Module` class. So, to mark a top-level method as `ruby2_keywords`, we need to workaround by surrounding the definition with `class Object; ruby2_keywords ...; end`. It is a bit annoying. I know that practical applications tend to define no top-level methods. However, I think of two reasons that we want top-level `ruby2_keywords`: 1. To learn `ruby2_keywords`, we tend to write a minimal script without class definition. Actually, I saw some people (even a committer) confused due to lack of top-level `ruby2_keywords` when they are learning `ruby2_keywords`. 2. We write small applications that consist of only one script file, e.g., Slack notification script, a simple AWS Lambda, a CGI script for webhooks, etc. I believe top-level methods are actually used in such a script. So, I think the top-level `ruby2_keywords` is good to have in 2.7. ---Files-------------------------------- top-level-ruby2_keywords.patch (1.57 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: