summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJemma Issroff <jemmaissroff@gmail.com>2023-10-31 17:00:28 -0300
committergit <svn-admin@ruby-lang.org>2023-11-01 14:40:44 +0000
commitd0625099e0f691f44fb4c796d8d497d818bf7c8e (patch)
tree223ed8f212c6778c32196545c11ffd9a612ec383
parent717fb5bb0b0d9aa4dbc636ea87037703a941b34f (diff)
[ruby/prism] Split KeywordParameterNode into Optional and Required
Prior to this commit, KeywordParameterNode included both optional and required keywords. With this commit, it is split in two, with `OptionalKeywordParameterNode`s no longer having a value field. https://github.com/ruby/prism/commit/89084d9af4
-rw-r--r--lib/prism/debug.rb4
-rw-r--r--prism/config.yml44
-rw-r--r--prism/prism.c48
-rw-r--r--test/prism/errors_test.rb10
-rw-r--r--test/prism/location_test.rb22
-rw-r--r--test/prism/snapshots/blocks.txt9
-rw-r--r--test/prism/snapshots/lambda.txt6
-rw-r--r--test/prism/snapshots/methods.txt37
-rw-r--r--test/prism/snapshots/procs.txt30
-rw-r--r--test/prism/snapshots/seattlerb/args_kw_block.txt2
-rw-r--r--test/prism/snapshots/seattlerb/block_kw.txt2
-rw-r--r--test/prism/snapshots/seattlerb/block_kw__required.txt5
-rw-r--r--test/prism/snapshots/seattlerb/block_kwarg_lvar.txt2
-rw-r--r--test/prism/snapshots/seattlerb/block_kwarg_lvar_multiple.txt4
-rw-r--r--test/prism/snapshots/seattlerb/defn_kwarg_kwarg.txt4
-rw-r--r--test/prism/snapshots/seattlerb/defn_kwarg_kwsplat.txt2
-rw-r--r--test/prism/snapshots/seattlerb/defn_kwarg_kwsplat_anon.txt2
-rw-r--r--test/prism/snapshots/seattlerb/defn_kwarg_lvar.txt2
-rw-r--r--test/prism/snapshots/seattlerb/defn_kwarg_no_parens.txt2
-rw-r--r--test/prism/snapshots/seattlerb/defn_kwarg_val.txt2
-rw-r--r--test/prism/snapshots/seattlerb/defs_kwarg.txt2
-rw-r--r--test/prism/snapshots/seattlerb/f_kw.txt2
-rw-r--r--test/prism/snapshots/seattlerb/f_kw__required.txt5
-rw-r--r--test/prism/snapshots/seattlerb/iter_kwarg.txt2
-rw-r--r--test/prism/snapshots/seattlerb/iter_kwarg_kwsplat.txt2
-rw-r--r--test/prism/snapshots/seattlerb/required_kwarg_no_value.txt10
-rw-r--r--test/prism/snapshots/seattlerb/stabby_block_kw.txt2
-rw-r--r--test/prism/snapshots/seattlerb/stabby_block_kw__required.txt5
-rw-r--r--test/prism/snapshots/unparser/corpus/literal/def.txt23
-rw-r--r--test/prism/snapshots/whitequark/args.txt13
-rw-r--r--test/prism/snapshots/whitequark/blockargs.txt11
-rw-r--r--test/prism/snapshots/whitequark/kwarg.txt5
-rw-r--r--test/prism/snapshots/whitequark/kwoptarg.txt2
-rw-r--r--test/prism/snapshots/whitequark/kwoptarg_with_kwrestarg_and_forwarded_args.txt2
-rw-r--r--test/prism/snapshots/whitequark/ruby_bug_15789.txt2
-rw-r--r--test/prism/snapshots/whitequark/ruby_bug_9669.txt5
-rw-r--r--test/prism/snapshots/whitequark/send_lambda_args_noparen.txt7
37 files changed, 174 insertions, 165 deletions
diff --git a/lib/prism/debug.rb b/lib/prism/debug.rb
index cdb8e9b303..34e0c43f49 100644
--- a/lib/prism/debug.rb
+++ b/lib/prism/debug.rb
@@ -114,8 +114,8 @@ module Prism
AnonymousLocal
end
end,
- *params.keywords.reject(&:value).map(&:name),
- *params.keywords.select(&:value).map(&:name)
+ *params.keywords.select { |kw| kw.is_a? OptionalKeywordParameterNode }.map(&:name),
+ *params.keywords.select { |kw| kw.is_a? RequiredKeywordParameterNode }.map(&:name),
]
sorted << AnonymousLocal if params.keywords.any?
diff --git a/prism/config.yml b/prism/config.yml
index 2e605ae56c..9e0b25553e 100644
--- a/prism/config.yml
+++ b/prism/config.yml
@@ -1692,24 +1692,6 @@ nodes:
foo(a: b)
^^^^
- - name: KeywordParameterNode
- fields:
- - name: name
- type: constant
- - name: name_loc
- type: location
- - name: value
- type: node?
- comment: |
- Represents a keyword parameter to a method, block, or lambda definition.
-
- def a(b:)
- ^^
- end
-
- def a(b: 1)
- ^^^^
- end
- name: KeywordRestParameterNode
fields:
- name: name
@@ -1997,6 +1979,18 @@ nodes:
$1
^^
+ - name: OptionalKeywordParameterNode
+ fields:
+ - name: name
+ type: constant
+ - name: name_loc
+ type: location
+ comment: |
+ Represents an optional keyword parameter to a method, block, or lambda definition.
+
+ def a(b: )
+ ^^
+ end
- name: OptionalParameterNode
fields:
- name: name
@@ -2184,6 +2178,20 @@ nodes:
/foo/i
^^^^^^
+ - name: RequiredKeywordParameterNode
+ fields:
+ - name: name
+ type: constant
+ - name: name_loc
+ type: location
+ - name: value
+ type: node
+ comment: |
+ Represents a required keyword parameter to a method, block, or lambda definition.
+
+ def a(b: 1)
+ ^^^^
+ end
- name: RequiredParameterNode
fields:
- name: name
diff --git a/prism/prism.c b/prism/prism.c
index 7e5d3e48b6..4dda06aedc 100644
--- a/prism/prism.c
+++ b/prism/prism.c
@@ -3326,17 +3326,37 @@ pm_keyword_hash_node_elements_append(pm_keyword_hash_node_t *hash, pm_node_t *el
hash->base.location.end = element->location.end;
}
-// Allocate a new KeywordParameterNode node.
-static pm_keyword_parameter_node_t *
-pm_keyword_parameter_node_create(pm_parser_t *parser, const pm_token_t *name, pm_node_t *value) {
- pm_keyword_parameter_node_t *node = PM_ALLOC_NODE(parser, pm_keyword_parameter_node_t);
+// Allocate a new OptionalKeywordParameterNode node.
+static pm_optional_keyword_parameter_node_t *
+pm_optional_keyword_parameter_node_create(pm_parser_t *parser, const pm_token_t *name) {
+ pm_optional_keyword_parameter_node_t *node = PM_ALLOC_NODE(parser, pm_optional_keyword_parameter_node_t);
- *node = (pm_keyword_parameter_node_t) {
+ *node = (pm_optional_keyword_parameter_node_t) {
{
- .type = PM_KEYWORD_PARAMETER_NODE,
+ .type = PM_OPTIONAL_KEYWORD_PARAMETER_NODE,
.location = {
.start = name->start,
- .end = value == NULL ? name->end : value->location.end
+ .end = name->end
+ },
+ },
+ .name = pm_parser_constant_id_location(parser, name->start, name->end - 1),
+ .name_loc = PM_LOCATION_TOKEN_VALUE(name),
+ };
+
+ return node;
+}
+
+// Allocate a new RequiredKeywordParameterNode node.
+static pm_required_keyword_parameter_node_t *
+pm_required_keyword_parameter_node_create(pm_parser_t *parser, const pm_token_t *name, pm_node_t *value) {
+ pm_required_keyword_parameter_node_t *node = PM_ALLOC_NODE(parser, pm_required_keyword_parameter_node_t);
+
+ *node = (pm_required_keyword_parameter_node_t) {
+ {
+ .type = PM_REQUIRED_KEYWORD_PARAMETER_NODE,
+ .location = {
+ .start = name->start,
+ .end = value->location.end
},
},
.name = pm_parser_constant_id_location(parser, name->start, name->end - 1),
@@ -10482,7 +10502,7 @@ parse_parameters(
case PM_TOKEN_COMMA:
case PM_TOKEN_PARENTHESIS_RIGHT:
case PM_TOKEN_PIPE: {
- pm_node_t *param = (pm_node_t *) pm_keyword_parameter_node_create(parser, &name, NULL);
+ pm_node_t *param = (pm_node_t *) pm_optional_keyword_parameter_node_create(parser, &name);
pm_parameters_node_keywords_append(params, param);
break;
}
@@ -10493,19 +10513,23 @@ parse_parameters(
break;
}
- pm_node_t *param = (pm_node_t *) pm_keyword_parameter_node_create(parser, &name, NULL);
+ pm_node_t *param = (pm_node_t *) pm_optional_keyword_parameter_node_create(parser, &name);
pm_parameters_node_keywords_append(params, param);
break;
}
default: {
- pm_node_t *value = NULL;
+ pm_node_t *param;
+
if (token_begins_expression_p(parser->current.type)) {
context_push(parser, PM_CONTEXT_DEFAULT_PARAMS);
- value = parse_expression(parser, binding_power, PM_ERR_PARAMETER_NO_DEFAULT_KW);
+ pm_node_t *value = parse_expression(parser, binding_power, PM_ERR_PARAMETER_NO_DEFAULT_KW);
context_pop(parser);
+ param = (pm_node_t *) pm_required_keyword_parameter_node_create(parser, &name, value);
+ }
+ else {
+ param = (pm_node_t *) pm_optional_keyword_parameter_node_create(parser, &name);
}
- pm_node_t *param = (pm_node_t *) pm_keyword_parameter_node_create(parser, &name, value);
pm_parameters_node_keywords_append(params, param);
// If parsing the value of the parameter resulted in error recovery,
diff --git a/test/prism/errors_test.rb b/test/prism/errors_test.rb
index e08c2f744d..604311abe4 100644
--- a/test/prism/errors_test.rb
+++ b/test/prism/errors_test.rb
@@ -746,7 +746,7 @@ module Prism
[],
nil,
[RequiredParameterNode(:a)],
- [KeywordParameterNode(:b, Location(), nil)],
+ [OptionalKeywordParameterNode(:b, Location())],
nil,
nil
),
@@ -774,7 +774,7 @@ module Prism
[],
nil,
[],
- [KeywordParameterNode(:b, Location(), nil)],
+ [OptionalKeywordParameterNode(:b, Location())],
KeywordRestParameterNode(:rest, Location(), Location()),
nil
),
@@ -824,7 +824,7 @@ module Prism
[],
nil,
[RequiredParameterNode(:a)],
- [KeywordParameterNode(:b, Location(), nil)],
+ [OptionalKeywordParameterNode(:b, Location())],
KeywordRestParameterNode(:args, Location(), Location()),
nil
),
@@ -854,7 +854,7 @@ module Prism
[],
nil,
[RequiredParameterNode(:a)],
- [KeywordParameterNode(:b, Location(), nil)],
+ [OptionalKeywordParameterNode(:b, Location())],
KeywordRestParameterNode(:args, Location(), Location()),
nil
),
@@ -884,7 +884,7 @@ module Prism
[],
nil,
[RequiredParameterNode(:a)],
- [KeywordParameterNode(:b, Location(), nil)],
+ [OptionalKeywordParameterNode(:b, Location())],
KeywordRestParameterNode(:args, Location(), Location()),
nil
),
diff --git a/test/prism/location_test.rb b/test/prism/location_test.rb
index 5501d9de4a..aa130abd5f 100644
--- a/test/prism/location_test.rb
+++ b/test/prism/location_test.rb
@@ -502,16 +502,6 @@ module Prism
assert_location(KeywordHashNode, "foo(a, b: 1)", 7...11) { |node| node.arguments.arguments[1] }
end
- def test_KeywordParameterNode
- assert_location(KeywordParameterNode, "def foo(bar:); end", 8...12) do |node|
- node.parameters.keywords.first
- end
-
- assert_location(KeywordParameterNode, "def foo(bar: nil); end", 8...16) do |node|
- node.parameters.keywords.first
- end
- end
-
def test_KeywordRestParameterNode
assert_location(KeywordRestParameterNode, "def foo(**); end", 8...10) do |node|
node.parameters.keyword_rest
@@ -609,6 +599,12 @@ module Prism
assert_location(NumberedReferenceReadNode, "$1")
end
+ def test_OptionalKeywordParameterNode
+ assert_location(OptionalKeywordParameterNode, "def foo(bar:); end", 8...12) do |node|
+ node.parameters.keywords.first
+ end
+ end
+
def test_OptionalParameterNode
assert_location(OptionalParameterNode, "def foo(bar = nil); end", 8...17) do |node|
node.parameters.optionals.first
@@ -673,6 +669,12 @@ module Prism
assert_location(RegularExpressionNode, "/foo/")
end
+ def test_RequiredKeywordParameterNode
+ assert_location(RequiredKeywordParameterNode, "def foo(bar: nil); end", 8...16) do |node|
+ node.parameters.keywords.first
+ end
+ end
+
def test_RequiredParameterNode
assert_location(RequiredParameterNode, "def foo(bar); end", 8...11) do |node|
node.parameters.requireds.first
diff --git a/test/prism/snapshots/blocks.txt b/test/prism/snapshots/blocks.txt
index 91a0735960..0cf7f693de 100644
--- a/test/prism/snapshots/blocks.txt
+++ b/test/prism/snapshots/blocks.txt
@@ -517,10 +517,9 @@
│ │ │ │ ├── rest: ∅
│ │ │ │ ├── posts: (length: 0)
│ │ │ │ ├── keywords: (length: 1)
- │ │ │ │ │ └── @ KeywordParameterNode (location: (33,17)-(33,19))
+ │ │ │ │ │ └── @ OptionalKeywordParameterNode (location: (33,17)-(33,19))
│ │ │ │ │ ├── name: :z
- │ │ │ │ │ ├── name_loc: (33,17)-(33,19) = "z:"
- │ │ │ │ │ └── value: ∅
+ │ │ │ │ │ └── name_loc: (33,17)-(33,19) = "z:"
│ │ │ │ ├── keyword_rest: ∅
│ │ │ │ └── block: ∅
│ │ │ ├── locals: (length: 0)
@@ -696,13 +695,13 @@
│ │ │ │ │ │ ├── rest: ∅
│ │ │ │ │ │ ├── posts: (length: 0)
│ │ │ │ │ │ ├── keywords: (length: 2)
- │ │ │ │ │ │ │ ├── @ KeywordParameterNode (location: (49,2)-(49,6))
+ │ │ │ │ │ │ │ ├── @ RequiredKeywordParameterNode (location: (49,2)-(49,6))
│ │ │ │ │ │ │ │ ├── name: :a
│ │ │ │ │ │ │ │ ├── name_loc: (49,2)-(49,4) = "a:"
│ │ │ │ │ │ │ │ └── value:
│ │ │ │ │ │ │ │ @ IntegerNode (location: (49,5)-(49,6))
│ │ │ │ │ │ │ │ └── flags: decimal
- │ │ │ │ │ │ │ └── @ KeywordParameterNode (location: (50,2)-(50,6))
+ │ │ │ │ │ │ │ └── @ RequiredKeywordParameterNode (location: (50,2)-(50,6))
│ │ │ │ │ │ │ ├── name: :b
│ │ │ │ │ │ │ ├── name_loc: (50,2)-(50,4) = "b:"
│ │ │ │ │ │ │ └── value:
diff --git a/test/prism/snapshots/lambda.txt b/test/prism/snapshots/lambda.txt
index 380284b517..c2442d546c 100644
--- a/test/prism/snapshots/lambda.txt
+++ b/test/prism/snapshots/lambda.txt
@@ -39,7 +39,7 @@
│ │ │ ├── rest: ∅
│ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 1)
- │ │ │ │ └── @ KeywordParameterNode (location: (5,3)-(5,13))
+ │ │ │ │ └── @ RequiredKeywordParameterNode (location: (5,3)-(5,13))
│ │ │ │ ├── name: :x
│ │ │ │ ├── name_loc: (5,3)-(5,5) = "x:"
│ │ │ │ └── value:
@@ -89,7 +89,7 @@
│ │ │ ├── rest: ∅
│ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 1)
- │ │ │ │ └── @ KeywordParameterNode (location: (7,3)-(7,11))
+ │ │ │ │ └── @ RequiredKeywordParameterNode (location: (7,3)-(7,11))
│ │ │ │ ├── name: :a
│ │ │ │ ├── name_loc: (7,3)-(7,5) = "a:"
│ │ │ │ └── value:
@@ -173,7 +173,7 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (11,3)-(11,11))
+ │ │ │ └── @ RequiredKeywordParameterNode (location: (11,3)-(11,11))
│ │ │ ├── name: :foo
│ │ │ ├── name_loc: (11,3)-(11,7) = "foo:"
│ │ │ └── value:
diff --git a/test/prism/snapshots/methods.txt b/test/prism/snapshots/methods.txt
index c4f2a0853c..69d1c0ecec 100644
--- a/test/prism/snapshots/methods.txt
+++ b/test/prism/snapshots/methods.txt
@@ -260,10 +260,9 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (31,6)-(31,8))
+ │ │ │ └── @ OptionalKeywordParameterNode (location: (31,6)-(31,8))
│ │ │ ├── name: :b
- │ │ │ ├── name_loc: (31,6)-(31,8) = "b:"
- │ │ │ └── value: ∅
+ │ │ │ └── name_loc: (31,6)-(31,8) = "b:"
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
@@ -291,10 +290,9 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (35,6)-(35,8))
+ │ │ │ └── @ OptionalKeywordParameterNode (location: (35,6)-(35,8))
│ │ │ ├── name: :b
- │ │ │ ├── name_loc: (35,6)-(35,8) = "b:"
- │ │ │ └── value: ∅
+ │ │ │ └── name_loc: (35,6)-(35,8) = "b:"
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
@@ -428,11 +426,10 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 2)
- │ │ │ ├── @ KeywordParameterNode (location: (53,6)-(53,8))
+ │ │ │ ├── @ OptionalKeywordParameterNode (location: (53,6)-(53,8))
│ │ │ │ ├── name: :b
- │ │ │ │ ├── name_loc: (53,6)-(53,8) = "b:"
- │ │ │ │ └── value: ∅
- │ │ │ └── @ KeywordParameterNode (location: (53,10)-(53,14))
+ │ │ │ │ └── name_loc: (53,6)-(53,8) = "b:"
+ │ │ │ └── @ RequiredKeywordParameterNode (location: (53,10)-(53,14))
│ │ │ ├── name: :c
│ │ │ ├── name_loc: (53,10)-(53,12) = "c:"
│ │ │ └── value:
@@ -459,11 +456,10 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 2)
- │ │ │ ├── @ KeywordParameterNode (location: (56,6)-(56,8))
+ │ │ │ ├── @ OptionalKeywordParameterNode (location: (56,6)-(56,8))
│ │ │ │ ├── name: :b
- │ │ │ │ ├── name_loc: (56,6)-(56,8) = "b:"
- │ │ │ │ └── value: ∅
- │ │ │ └── @ KeywordParameterNode (location: (56,10)-(56,14))
+ │ │ │ │ └── name_loc: (56,6)-(56,8) = "b:"
+ │ │ │ └── @ RequiredKeywordParameterNode (location: (56,10)-(56,14))
│ │ │ ├── name: :c
│ │ │ ├── name_loc: (56,10)-(56,12) = "c:"
│ │ │ └── value:
@@ -490,16 +486,15 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 2)
- │ │ │ ├── @ KeywordParameterNode (location: (59,6)-(60,3))
+ │ │ │ ├── @ RequiredKeywordParameterNode (location: (59,6)-(60,3))
│ │ │ │ ├── name: :b
│ │ │ │ ├── name_loc: (59,6)-(59,8) = "b:"
│ │ │ │ └── value:
│ │ │ │ @ IntegerNode (location: (60,2)-(60,3))
│ │ │ │ └── flags: decimal
- │ │ │ └── @ KeywordParameterNode (location: (60,5)-(60,7))
+ │ │ │ └── @ OptionalKeywordParameterNode (location: (60,5)-(60,7))
│ │ │ ├── name: :c
- │ │ │ ├── name_loc: (60,5)-(60,7) = "c:"
- │ │ │ └── value: ∅
+ │ │ │ └── name_loc: (60,5)-(60,7) = "c:"
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
@@ -1312,7 +1307,7 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (142,8)-(142,19))
+ │ │ │ └── @ RequiredKeywordParameterNode (location: (142,8)-(142,19))
│ │ │ ├── name: :a
│ │ │ ├── name_loc: (142,8)-(142,10) = "a:"
│ │ │ └── value:
@@ -1352,7 +1347,7 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (145,8)-(145,18))
+ │ │ │ └── @ RequiredKeywordParameterNode (location: (145,8)-(145,18))
│ │ │ ├── name: :a
│ │ │ ├── name_loc: (145,8)-(145,10) = "a:"
│ │ │ └── value:
@@ -1390,7 +1385,7 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (148,8)-(148,17))
+ │ │ │ └── @ RequiredKeywordParameterNode (location: (148,8)-(148,17))
│ │ │ ├── name: :a
│ │ │ ├── name_loc: (148,8)-(148,10) = "a:"
│ │ │ └── value:
diff --git a/test/prism/snapshots/procs.txt b/test/prism/snapshots/procs.txt
index a711c5551e..d704add3ea 100644
--- a/test/prism/snapshots/procs.txt
+++ b/test/prism/snapshots/procs.txt
@@ -144,14 +144,12 @@
│ │ │ ├── rest: ∅
│ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 2)
- │ │ │ │ ├── @ KeywordParameterNode (location: (17,13)-(17,15))
+ │ │ │ │ ├── @ OptionalKeywordParameterNode (location: (17,13)-(17,15))
│ │ │ │ │ ├── name: :c
- │ │ │ │ │ ├── name_loc: (17,13)-(17,15) = "c:"
- │ │ │ │ │ └── value: ∅
- │ │ │ │ └── @ KeywordParameterNode (location: (17,17)-(17,19))
+ │ │ │ │ │ └── name_loc: (17,13)-(17,15) = "c:"
+ │ │ │ │ └── @ OptionalKeywordParameterNode (location: (17,17)-(17,19))
│ │ │ │ ├── name: :d
- │ │ │ │ ├── name_loc: (17,17)-(17,19) = "d:"
- │ │ │ │ └── value: ∅
+ │ │ │ │ └── name_loc: (17,17)-(17,19) = "d:"
│ │ │ ├── keyword_rest: ∅
│ │ │ └── block:
│ │ │ @ BlockParameterNode (location: (17,21)-(17,23))
@@ -194,14 +192,12 @@
│ │ │ │ └── operator_loc: (19,14)-(19,15) = "*"
│ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 2)
- │ │ │ │ ├── @ KeywordParameterNode (location: (19,18)-(19,20))
+ │ │ │ │ ├── @ OptionalKeywordParameterNode (location: (19,18)-(19,20))
│ │ │ │ │ ├── name: :d
- │ │ │ │ │ ├── name_loc: (19,18)-(19,20) = "d:"
- │ │ │ │ │ └── value: ∅
- │ │ │ │ └── @ KeywordParameterNode (location: (19,22)-(19,24))
+ │ │ │ │ │ └── name_loc: (19,18)-(19,20) = "d:"
+ │ │ │ │ └── @ OptionalKeywordParameterNode (location: (19,22)-(19,24))
│ │ │ │ ├── name: :e
- │ │ │ │ ├── name_loc: (19,22)-(19,24) = "e:"
- │ │ │ │ └── value: ∅
+ │ │ │ │ └── name_loc: (19,22)-(19,24) = "e:"
│ │ │ ├── keyword_rest:
│ │ │ │ @ KeywordRestParameterNode (location: (19,26)-(19,29))
│ │ │ │ ├── name: :f
@@ -248,14 +244,12 @@
│ │ │ │ └── operator_loc: (21,14)-(21,15) = "*"
│ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 2)
- │ │ │ │ ├── @ KeywordParameterNode (location: (21,18)-(21,20))
+ │ │ │ │ ├── @ OptionalKeywordParameterNode (location: (21,18)-(21,20))
│ │ │ │ │ ├── name: :d
- │ │ │ │ │ ├── name_loc: (21,18)-(21,20) = "d:"
- │ │ │ │ │ └── value: ∅
- │ │ │ │ └── @ KeywordParameterNode (location: (21,22)-(21,24))
+ │ │ │ │ │ └── name_loc: (21,18)-(21,20) = "d:"
+ │ │ │ │ └── @ OptionalKeywordParameterNode (location: (21,22)-(21,24))
│ │ │ │ ├── name: :e
- │ │ │ │ ├── name_loc: (21,22)-(21,24) = "e:"
- │ │ │ │ └── value: ∅
+ │ │ │ │ └── name_loc: (21,22)-(21,24) = "e:"
│ │ │ ├── keyword_rest:
│ │ │ │ @ KeywordRestParameterNode (location: (21,26)-(21,29))
│ │ │ │ ├── name: :f
diff --git a/test/prism/snapshots/seattlerb/args_kw_block.txt b/test/prism/snapshots/seattlerb/args_kw_block.txt
index 3cbd2c1705..13ea25095d 100644
--- a/test/prism/snapshots/seattlerb/args_kw_block.txt
+++ b/test/prism/snapshots/seattlerb/args_kw_block.txt
@@ -14,7 +14,7 @@
│ ├── rest: ∅
│ ├── posts: (length: 0)
│ ├── keywords: (length: 1)
- │ │ └── @ KeywordParameterNode (location: (1,6)-(1,10))
+ │ │ └── @ RequiredKeywordParameterNode (location: (1,6)-(1,10))
│ │ ├── name: :a
│ │ ├── name_loc: (1,6)-(1,8) = "a:"
│ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/block_kw.txt b/test/prism/snapshots/seattlerb/block_kw.txt
index 92773bda25..db136d2ae6 100644
--- a/test/prism/snapshots/seattlerb/block_kw.txt
+++ b/test/prism/snapshots/seattlerb/block_kw.txt
@@ -22,7 +22,7 @@
│ │ │ ├── rest: ∅
│ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 1)
- │ │ │ │ └── @ KeywordParameterNode (location: (1,8)-(1,12))
+ │ │ │ │ └── @ RequiredKeywordParameterNode (location: (1,8)-(1,12))
│ │ │ │ ├── name: :k
│ │ │ │ ├── name_loc: (1,8)-(1,10) = "k:"
│ │ │ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/block_kw__required.txt b/test/prism/snapshots/seattlerb/block_kw__required.txt
index 7e0ad49f5f..7fdd0c4e1e 100644
--- a/test/prism/snapshots/seattlerb/block_kw__required.txt
+++ b/test/prism/snapshots/seattlerb/block_kw__required.txt
@@ -22,10 +22,9 @@
│ │ │ ├── rest: ∅
│ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 1)
- │ │ │ │ └── @ KeywordParameterNode (location: (1,9)-(1,11))
+ │ │ │ │ └── @ OptionalKeywordParameterNode (location: (1,9)-(1,11))
│ │ │ │ ├── name: :k
- │ │ │ │ ├── name_loc: (1,9)-(1,11) = "k:"
- │ │ │ │ └── value: ∅
+ │ │ │ │ └── name_loc: (1,9)-(1,11) = "k:"
│ │ │ ├── keyword_rest: ∅
│ │ │ └── block: ∅
│ │ ├── locals: (length: 0)
diff --git a/test/prism/snapshots/seattlerb/block_kwarg_lvar.txt b/test/prism/snapshots/seattlerb/block_kwarg_lvar.txt
index 434c1a4f81..d574e83dea 100644
--- a/test/prism/snapshots/seattlerb/block_kwarg_lvar.txt
+++ b/test/prism/snapshots/seattlerb/block_kwarg_lvar.txt
@@ -22,7 +22,7 @@
│ │ │ ├── rest: ∅
│ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 1)
- │ │ │ │ └── @ KeywordParameterNode (location: (1,6)-(1,14))
+ │ │ │ │ └── @ RequiredKeywordParameterNode (location: (1,6)-(1,14))
│ │ │ │ ├── name: :kw
│ │ │ │ ├── name_loc: (1,6)-(1,9) = "kw:"
│ │ │ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/block_kwarg_lvar_multiple.txt b/test/prism/snapshots/seattlerb/block_kwarg_lvar_multiple.txt
index badb88d720..10814a2bbc 100644
--- a/test/prism/snapshots/seattlerb/block_kwarg_lvar_multiple.txt
+++ b/test/prism/snapshots/seattlerb/block_kwarg_lvar_multiple.txt
@@ -22,7 +22,7 @@
│ │ │ ├── rest: ∅
│ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 2)
- │ │ │ │ ├── @ KeywordParameterNode (location: (1,6)-(1,14))
+ │ │ │ │ ├── @ RequiredKeywordParameterNode (location: (1,6)-(1,14))
│ │ │ │ │ ├── name: :kw
│ │ │ │ │ ├── name_loc: (1,6)-(1,9) = "kw:"
│ │ │ │ │ └── value:
@@ -31,7 +31,7 @@
│ │ │ │ │ ├── value_loc: (1,11)-(1,14) = "val"
│ │ │ │ │ ├── closing_loc: ∅
│ │ │ │ │ └── unescaped: "val"
- │ │ │ │ └── @ KeywordParameterNode (location: (1,16)-(1,26))
+ │ │ │ │ └── @ RequiredKeywordParameterNode (location: (1,16)-(1,26))
│ │ │ │ ├── name: :kw2
│ │ │ │ ├── name_loc: (1,16)-(1,20) = "kw2:"
│ │ │ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/defn_kwarg_kwarg.txt b/test/prism/snapshots/seattlerb/defn_kwarg_kwarg.txt
index 2d57ad3189..7ec17b6f09 100644
--- a/test/prism/snapshots/seattlerb/defn_kwarg_kwarg.txt
+++ b/test/prism/snapshots/seattlerb/defn_kwarg_kwarg.txt
@@ -16,13 +16,13 @@
│ ├── rest: ∅
│ ├── posts: (length: 0)
│ ├── keywords: (length: 2)
- │ │ ├── @ KeywordParameterNode (location: (1,9)-(1,13))
+ │ │ ├── @ RequiredKeywordParameterNode (location: (1,9)-(1,13))
│ │ │ ├── name: :b
│ │ │ ├── name_loc: (1,9)-(1,11) = "b:"
│ │ │ └── value:
│ │ │ @ IntegerNode (location: (1,12)-(1,13))
│ │ │ └── flags: decimal
- │ │ └── @ KeywordParameterNode (location: (1,15)-(1,19))
+ │ │ └── @ RequiredKeywordParameterNode (location: (1,15)-(1,19))
│ │ ├── name: :c
│ │ ├── name_loc: (1,15)-(1,17) = "c:"
│ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/defn_kwarg_kwsplat.txt b/test/prism/snapshots/seattlerb/defn_kwarg_kwsplat.txt
index 0d005c2057..b27e177824 100644
--- a/test/prism/snapshots/seattlerb/defn_kwarg_kwsplat.txt
+++ b/test/prism/snapshots/seattlerb/defn_kwarg_kwsplat.txt
@@ -14,7 +14,7 @@
│ ├── rest: ∅
│ ├── posts: (length: 0)
│ ├── keywords: (length: 1)
- │ │ └── @ KeywordParameterNode (location: (1,6)-(1,10))
+ │ │ └── @ RequiredKeywordParameterNode (location: (1,6)-(1,10))
│ │ ├── name: :b
│ │ ├── name_loc: (1,6)-(1,8) = "b:"
│ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/defn_kwarg_kwsplat_anon.txt b/test/prism/snapshots/seattlerb/defn_kwarg_kwsplat_anon.txt
index daa6c6bb06..cfb8d3487f 100644
--- a/test/prism/snapshots/seattlerb/defn_kwarg_kwsplat_anon.txt
+++ b/test/prism/snapshots/seattlerb/defn_kwarg_kwsplat_anon.txt
@@ -14,7 +14,7 @@
│ ├── rest: ∅
│ ├── posts: (length: 0)
│ ├── keywords: (length: 1)
- │ │ └── @ KeywordParameterNode (location: (1,6)-(1,10))
+ │ │ └── @ RequiredKeywordParameterNode (location: (1,6)-(1,10))
│ │ ├── name: :b
│ │ ├── name_loc: (1,6)-(1,8) = "b:"
│ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/defn_kwarg_lvar.txt b/test/prism/snapshots/seattlerb/defn_kwarg_lvar.txt
index 6b46d9e2d4..8af8ac4726 100644
--- a/test/prism/snapshots/seattlerb/defn_kwarg_lvar.txt
+++ b/test/prism/snapshots/seattlerb/defn_kwarg_lvar.txt
@@ -14,7 +14,7 @@
│ ├── rest: ∅
│ ├── posts: (length: 0)
│ ├── keywords: (length: 1)
- │ │ └── @ KeywordParameterNode (location: (1,8)-(1,16))
+ │ │ └── @ RequiredKeywordParameterNode (location: (1,8)-(1,16))
│ │ ├── name: :kw
│ │ ├── name_loc: (1,8)-(1,11) = "kw:"
│ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/defn_kwarg_no_parens.txt b/test/prism/snapshots/seattlerb/defn_kwarg_no_parens.txt
index ba0bd44324..3a5b9cd22a 100644
--- a/test/prism/snapshots/seattlerb/defn_kwarg_no_parens.txt
+++ b/test/prism/snapshots/seattlerb/defn_kwarg_no_parens.txt
@@ -14,7 +14,7 @@
│ ├── rest: ∅
│ ├── posts: (length: 0)
│ ├── keywords: (length: 1)
- │ │ └── @ KeywordParameterNode (location: (1,6)-(1,10))
+ │ │ └── @ RequiredKeywordParameterNode (location: (1,6)-(1,10))
│ │ ├── name: :a
│ │ ├── name_loc: (1,6)-(1,8) = "a:"
│ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/defn_kwarg_val.txt b/test/prism/snapshots/seattlerb/defn_kwarg_val.txt
index 5933c969db..3ed748a6e5 100644
--- a/test/prism/snapshots/seattlerb/defn_kwarg_val.txt
+++ b/test/prism/snapshots/seattlerb/defn_kwarg_val.txt
@@ -16,7 +16,7 @@
│ ├── rest: ∅
│ ├── posts: (length: 0)
│ ├── keywords: (length: 1)
- │ │ └── @ KeywordParameterNode (location: (1,9)-(1,12))
+ │ │ └── @ RequiredKeywordParameterNode (location: (1,9)-(1,12))
│ │ ├── name: :b
│ │ ├── name_loc: (1,9)-(1,11) = "b:"
│ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/defs_kwarg.txt b/test/prism/snapshots/seattlerb/defs_kwarg.txt
index 8343c1f178..55f39c5543 100644
--- a/test/prism/snapshots/seattlerb/defs_kwarg.txt
+++ b/test/prism/snapshots/seattlerb/defs_kwarg.txt
@@ -15,7 +15,7 @@
│ ├── rest: ∅
│ ├── posts: (length: 0)
│ ├── keywords: (length: 1)
- │ │ └── @ KeywordParameterNode (location: (1,11)-(1,15))
+ │ │ └── @ RequiredKeywordParameterNode (location: (1,11)-(1,15))
│ │ ├── name: :b
│ │ ├── name_loc: (1,11)-(1,13) = "b:"
│ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/f_kw.txt b/test/prism/snapshots/seattlerb/f_kw.txt
index cbc29b9c96..3c1e5aa3a6 100644
--- a/test/prism/snapshots/seattlerb/f_kw.txt
+++ b/test/prism/snapshots/seattlerb/f_kw.txt
@@ -14,7 +14,7 @@
│ ├── rest: ∅
│ ├── posts: (length: 0)
│ ├── keywords: (length: 1)
- │ │ └── @ KeywordParameterNode (location: (1,6)-(1,10))
+ │ │ └── @ RequiredKeywordParameterNode (location: (1,6)-(1,10))
│ │ ├── name: :k
│ │ ├── name_loc: (1,6)-(1,8) = "k:"
│ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/f_kw__required.txt b/test/prism/snapshots/seattlerb/f_kw__required.txt
index 16d94d6b46..f0375459a6 100644
--- a/test/prism/snapshots/seattlerb/f_kw__required.txt
+++ b/test/prism/snapshots/seattlerb/f_kw__required.txt
@@ -14,10 +14,9 @@
│ ├── rest: ∅
│ ├── posts: (length: 0)
│ ├── keywords: (length: 1)
- │ │ └── @ KeywordParameterNode (location: (1,6)-(1,8))
+ │ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,8))
│ │ ├── name: :k
- │ │ ├── name_loc: (1,6)-(1,8) = "k:"
- │ │ └── value: ∅
+ │ │ └── name_loc: (1,6)-(1,8) = "k:"
│ ├── keyword_rest: ∅
│ └── block: ∅
├── body: ∅
diff --git a/test/prism/snapshots/seattlerb/iter_kwarg.txt b/test/prism/snapshots/seattlerb/iter_kwarg.txt
index b0b021688f..d8e65d6a08 100644
--- a/test/prism/snapshots/seattlerb/iter_kwarg.txt
+++ b/test/prism/snapshots/seattlerb/iter_kwarg.txt
@@ -22,7 +22,7 @@
│ │ │ ├── rest: ∅
│ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 1)
- │ │ │ │ └── @ KeywordParameterNode (location: (1,5)-(1,9))
+ │ │ │ │ └── @ RequiredKeywordParameterNode (location: (1,5)-(1,9))
│ │ │ │ ├── name: :b
│ │ │ │ ├── name_loc: (1,5)-(1,7) = "b:"
│ │ │ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/iter_kwarg_kwsplat.txt b/test/prism/snapshots/seattlerb/iter_kwarg_kwsplat.txt
index d06f403185..5e72568951 100644
--- a/test/prism/snapshots/seattlerb/iter_kwarg_kwsplat.txt
+++ b/test/prism/snapshots/seattlerb/iter_kwarg_kwsplat.txt
@@ -22,7 +22,7 @@
│ │ │ ├── rest: ∅
│ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 1)
- │ │ │ │ └── @ KeywordParameterNode (location: (1,5)-(1,9))
+ │ │ │ │ └── @ RequiredKeywordParameterNode (location: (1,5)-(1,9))
│ │ │ │ ├── name: :b
│ │ │ │ ├── name_loc: (1,5)-(1,7) = "b:"
│ │ │ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/required_kwarg_no_value.txt b/test/prism/snapshots/seattlerb/required_kwarg_no_value.txt
index ccfdab2a14..167db3a475 100644
--- a/test/prism/snapshots/seattlerb/required_kwarg_no_value.txt
+++ b/test/prism/snapshots/seattlerb/required_kwarg_no_value.txt
@@ -14,14 +14,12 @@
│ ├── rest: ∅
│ ├── posts: (length: 0)
│ ├── keywords: (length: 2)
- │ │ ├── @ KeywordParameterNode (location: (1,6)-(1,8))
+ │ │ ├── @ OptionalKeywordParameterNode (location: (1,6)-(1,8))
│ │ │ ├── name: :a
- │ │ │ ├── name_loc: (1,6)-(1,8) = "a:"
- │ │ │ └── value: ∅
- │ │ └── @ KeywordParameterNode (location: (1,10)-(1,12))
+ │ │ │ └── name_loc: (1,6)-(1,8) = "a:"
+ │ │ └── @ OptionalKeywordParameterNode (location: (1,10)-(1,12))
│ │ ├── name: :b
- │ │ ├── name_loc: (1,10)-(1,12) = "b:"
- │ │ └── value: ∅
+ │ │ └── name_loc: (1,10)-(1,12) = "b:"
│ ├── keyword_rest: ∅
│ └── block: ∅
├── body: ∅
diff --git a/test/prism/snapshots/seattlerb/stabby_block_kw.txt b/test/prism/snapshots/seattlerb/stabby_block_kw.txt
index e3613e4b36..1accc172de 100644
--- a/test/prism/snapshots/seattlerb/stabby_block_kw.txt
+++ b/test/prism/snapshots/seattlerb/stabby_block_kw.txt
@@ -17,7 +17,7 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (1,4)-(1,8))
+ │ │ │ └── @ RequiredKeywordParameterNode (location: (1,4)-(1,8))
│ │ │ ├── name: :k
│ │ │ ├── name_loc: (1,4)-(1,6) = "k:"
│ │ │ └── value:
diff --git a/test/prism/snapshots/seattlerb/stabby_block_kw__required.txt b/test/prism/snapshots/seattlerb/stabby_block_kw__required.txt
index 0139100071..2754fa1b79 100644
--- a/test/prism/snapshots/seattlerb/stabby_block_kw__required.txt
+++ b/test/prism/snapshots/seattlerb/stabby_block_kw__required.txt
@@ -17,10 +17,9 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (1,4)-(1,6))
+ │ │ │ └── @ OptionalKeywordParameterNode (location: (1,4)-(1,6))
│ │ │ ├── name: :k
- │ │ │ ├── name_loc: (1,4)-(1,6) = "k:"
- │ │ │ └── value: ∅
+ │ │ │ └── name_loc: (1,4)-(1,6) = "k:"
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── locals: (length: 0)
diff --git a/test/prism/snapshots/unparser/corpus/literal/def.txt b/test/prism/snapshots/unparser/corpus/literal/def.txt
index 0e283e8fe2..837cd1d368 100644
--- a/test/prism/snapshots/unparser/corpus/literal/def.txt
+++ b/test/prism/snapshots/unparser/corpus/literal/def.txt
@@ -194,14 +194,12 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 2)
- │ │ │ ├── @ KeywordParameterNode (location: (21,8)-(21,12))
+ │ │ │ ├── @ OptionalKeywordParameterNode (location: (21,8)-(21,12))
│ │ │ │ ├── name: :bar
- │ │ │ │ ├── name_loc: (21,8)-(21,12) = "bar:"
- │ │ │ │ └── value: ∅
- │ │ │ └── @ KeywordParameterNode (location: (21,14)-(21,18))
+ │ │ │ │ └── name_loc: (21,8)-(21,12) = "bar:"
+ │ │ │ └── @ OptionalKeywordParameterNode (location: (21,14)-(21,18))
│ │ │ ├── name: :baz
- │ │ │ ├── name_loc: (21,14)-(21,18) = "baz:"
- │ │ │ └── value: ∅
+ │ │ │ └── name_loc: (21,14)-(21,18) = "baz:"
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
@@ -629,7 +627,7 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (74,8)-(74,14))
+ │ │ │ └── @ RequiredKeywordParameterNode (location: (74,8)-(74,14))
│ │ │ ├── name: :bar
│ │ │ ├── name_loc: (74,8)-(74,12) = "bar:"
│ │ │ └── value:
@@ -656,7 +654,7 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (77,8)-(77,16))
+ │ │ │ └── @ RequiredKeywordParameterNode (location: (77,8)-(77,16))
│ │ │ ├── name: :bar
│ │ │ ├── name_loc: (77,8)-(77,12) = "bar:"
│ │ │ └── value:
@@ -691,7 +689,7 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (80,8)-(80,18))
+ │ │ │ └── @ RequiredKeywordParameterNode (location: (80,8)-(80,18))
│ │ │ ├── name: :bar
│ │ │ ├── name_loc: (80,8)-(80,12) = "bar:"
│ │ │ └── value:
@@ -1092,11 +1090,10 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 2)
- │ │ │ ├── @ KeywordParameterNode (location: (123,8)-(123,12))
+ │ │ │ ├── @ OptionalKeywordParameterNode (location: (123,8)-(123,12))
│ │ │ │ ├── name: :bar
- │ │ │ │ ├── name_loc: (123,8)-(123,12) = "bar:"
- │ │ │ │ └── value: ∅
- │ │ │ └── @ KeywordParameterNode (location: (123,14)-(123,26))
+ │ │ │ │ └── name_loc: (123,8)-(123,12) = "bar:"
+ │ │ │ └── @ RequiredKeywordParameterNode (location: (123,14)-(123,26))
│ │ │ ├── name: :baz
│ │ │ ├── name_loc: (123,14)-(123,18) = "baz:"
│ │ │ └── value:
diff --git a/test/prism/snapshots/whitequark/args.txt b/test/prism/snapshots/whitequark/args.txt
index 1568396d9a..bc9d42da70 100644
--- a/test/prism/snapshots/whitequark/args.txt
+++ b/test/prism/snapshots/whitequark/args.txt
@@ -369,7 +369,7 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (23,7)-(23,13))
+ │ │ │ └── @ RequiredKeywordParameterNode (location: (23,7)-(23,13))
│ │ │ ├── name: :foo
│ │ │ ├── name_loc: (23,7)-(23,11) = "foo:"
│ │ │ └── value:
@@ -400,13 +400,13 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 2)
- │ │ │ ├── @ KeywordParameterNode (location: (25,7)-(25,13))
+ │ │ │ ├── @ RequiredKeywordParameterNode (location: (25,7)-(25,13))
│ │ │ │ ├── name: :foo
│ │ │ │ ├── name_loc: (25,7)-(25,11) = "foo:"
│ │ │ │ └── value:
│ │ │ │ @ IntegerNode (location: (25,12)-(25,13))
│ │ │ │ └── flags: decimal
- │ │ │ └── @ KeywordParameterNode (location: (25,15)-(25,21))
+ │ │ │ └── @ RequiredKeywordParameterNode (location: (25,15)-(25,21))
│ │ │ ├── name: :bar
│ │ │ ├── name_loc: (25,15)-(25,19) = "bar:"
│ │ │ └── value:
@@ -811,10 +811,9 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (51,6)-(51,10))
+ │ │ │ └── @ OptionalKeywordParameterNode (location: (51,6)-(51,10))
│ │ │ ├── name: :foo
- │ │ │ ├── name_loc: (51,6)-(51,10) = "foo:"
- │ │ │ └── value: ∅
+ │ │ │ └── name_loc: (51,6)-(51,10) = "foo:"
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
@@ -836,7 +835,7 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (54,6)-(54,13))
+ │ │ │ └── @ RequiredKeywordParameterNode (location: (54,6)-(54,13))
│ │ │ ├── name: :foo
│ │ │ ├── name_loc: (54,6)-(54,10) = "foo:"
│ │ │ └── value:
diff --git a/test/prism/snapshots/whitequark/blockargs.txt b/test/prism/snapshots/whitequark/blockargs.txt
index 39ef3adfd6..208e2bf333 100644
--- a/test/prism/snapshots/whitequark/blockargs.txt
+++ b/test/prism/snapshots/whitequark/blockargs.txt
@@ -963,7 +963,7 @@
│ │ │ │ ├── rest: ∅
│ │ │ │ ├── posts: (length: 0)
│ │ │ │ ├── keywords: (length: 1)
- │ │ │ │ │ └── @ KeywordParameterNode (location: (57,4)-(57,10))
+ │ │ │ │ │ └── @ RequiredKeywordParameterNode (location: (57,4)-(57,10))
│ │ │ │ │ ├── name: :foo
│ │ │ │ │ ├── name_loc: (57,4)-(57,8) = "foo:"
│ │ │ │ │ └── value:
@@ -1002,13 +1002,13 @@
│ │ │ │ ├── rest: ∅
│ │ │ │ ├── posts: (length: 0)
│ │ │ │ ├── keywords: (length: 2)
- │ │ │ │ │ ├── @ KeywordParameterNode (location: (59,4)-(59,10))
+ │ │ │ │ │ ├── @ RequiredKeywordParameterNode (location: (59,4)-(59,10))
│ │ │ │ │ │ ├── name: :foo
│ │ │ │ │ │ ├── name_loc: (59,4)-(59,8) = "foo:"
│ │ │ │ │ │ └── value:
│ │ │ │ │ │ @ IntegerNode (location: (59,9)-(59,10))
│ │ │ │ │ │ └── flags: decimal
- │ │ │ │ │ └── @ KeywordParameterNode (location: (59,12)-(59,18))
+ │ │ │ │ │ └── @ RequiredKeywordParameterNode (location: (59,12)-(59,18))
│ │ │ │ │ ├── name: :bar
│ │ │ │ │ ├── name_loc: (59,12)-(59,16) = "bar:"
│ │ │ │ │ └── value:
@@ -1051,10 +1051,9 @@
│ │ │ │ ├── rest: ∅
│ │ │ │ ├── posts: (length: 0)
│ │ │ │ ├── keywords: (length: 1)
- │ │ │ │ │ └── @ KeywordParameterNode (location: (61,4)-(61,8))
+ │ │ │ │ │ └── @ OptionalKeywordParameterNode (location: (61,4)-(61,8))
│ │ │ │ │ ├── name: :foo
- │ │ │ │ │ ├── name_loc: (61,4)-(61,8) = "foo:"
- │ │ │ │ │ └── value: ∅
+ │ │ │ │ │ └── name_loc: (61,4)-(61,8) = "foo:"
│ │ │ │ ├── keyword_rest: ∅
│ │ │ │ └── block: ∅
│ │ │ ├── locals: (length: 0)
diff --git a/test/prism/snapshots/whitequark/kwarg.txt b/test/prism/snapshots/whitequark/kwarg.txt
index 72ac3865b7..f0d8a921b4 100644
--- a/test/prism/snapshots/whitequark/kwarg.txt
+++ b/test/prism/snapshots/whitequark/kwarg.txt
@@ -14,10 +14,9 @@
│ ├── rest: ∅
│ ├── posts: (length: 0)
│ ├── keywords: (length: 1)
- │ │ └── @ KeywordParameterNode (location: (1,6)-(1,10))
+ │ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,10))
│ │ ├── name: :foo
- │ │ ├── name_loc: (1,6)-(1,10) = "foo:"
- │ │ └── value: ∅
+ │ │ └── name_loc: (1,6)-(1,10) = "foo:"
│ ├── keyword_rest: ∅
│ └── block: ∅
├── body: ∅
diff --git a/test/prism/snapshots/whitequark/kwoptarg.txt b/test/prism/snapshots/whitequark/kwoptarg.txt
index 2a3d2e8921..0b76202010 100644
--- a/test/prism/snapshots/whitequark/kwoptarg.txt
+++ b/test/prism/snapshots/whitequark/kwoptarg.txt
@@ -14,7 +14,7 @@
│ ├── rest: ∅
│ ├── posts: (length: 0)
│ ├── keywords: (length: 1)
- │ │ └── @ KeywordParameterNode (location: (1,6)-(1,12))
+ │ │ └── @ RequiredKeywordParameterNode (location: (1,6)-(1,12))
│ │ ├── name: :foo
│ │ ├── name_loc: (1,6)-(1,10) = "foo:"
│ │ └── value:
diff --git a/test/prism/snapshots/whitequark/kwoptarg_with_kwrestarg_and_forwarded_args.txt b/test/prism/snapshots/whitequark/kwoptarg_with_kwrestarg_and_forwarded_args.txt
index 930ee91c29..9b72a7f635 100644
--- a/test/prism/snapshots/whitequark/kwoptarg_with_kwrestarg_and_forwarded_args.txt
+++ b/test/prism/snapshots/whitequark/kwoptarg_with_kwrestarg_and_forwarded_args.txt
@@ -14,7 +14,7 @@
│ ├── rest: ∅
│ ├── posts: (length: 0)
│ ├── keywords: (length: 1)
- │ │ └── @ KeywordParameterNode (location: (1,6)-(1,12))
+ │ │ └── @ RequiredKeywordParameterNode (location: (1,6)-(1,12))
│ │ ├── name: :a
│ │ ├── name_loc: (1,6)-(1,8) = "a:"
│ │ └── value:
diff --git a/test/prism/snapshots/whitequark/ruby_bug_15789.txt b/test/prism/snapshots/whitequark/ruby_bug_15789.txt
index 93ef6b334e..788462b397 100644
--- a/test/prism/snapshots/whitequark/ruby_bug_15789.txt
+++ b/test/prism/snapshots/whitequark/ruby_bug_15789.txt
@@ -80,7 +80,7 @@
│ │ │ │ ├── rest: ∅
│ │ │ │ ├── posts: (length: 0)
│ │ │ │ ├── keywords: (length: 1)
- │ │ │ │ │ └── @ KeywordParameterNode (location: (3,5)-(3,14))
+ │ │ │ │ │ └── @ RequiredKeywordParameterNode (location: (3,5)-(3,14))
│ │ │ │ │ ├── name: :a
│ │ │ │ │ ├── name_loc: (3,5)-(3,7) = "a:"
│ │ │ │ │ └── value:
diff --git a/test/prism/snapshots/whitequark/ruby_bug_9669.txt b/test/prism/snapshots/whitequark/ruby_bug_9669.txt
index 62a25ef2ce..aa9f382a85 100644
--- a/test/prism/snapshots/whitequark/ruby_bug_9669.txt
+++ b/test/prism/snapshots/whitequark/ruby_bug_9669.txt
@@ -14,10 +14,9 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (1,6)-(1,8))
+ │ │ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,8))
│ │ │ ├── name: :b
- │ │ │ ├── name_loc: (1,6)-(1,8) = "b:"
- │ │ │ └── value: ∅
+ │ │ │ └── name_loc: (1,6)-(1,8) = "b:"
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body:
diff --git a/test/prism/snapshots/whitequark/send_lambda_args_noparen.txt b/test/prism/snapshots/whitequark/send_lambda_args_noparen.txt
index f28ed889a8..47d863f157 100644
--- a/test/prism/snapshots/whitequark/send_lambda_args_noparen.txt
+++ b/test/prism/snapshots/whitequark/send_lambda_args_noparen.txt
@@ -17,7 +17,7 @@
│ │ │ ├── rest: ∅
│ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 1)
- │ │ │ │ └── @ KeywordParameterNode (location: (1,3)-(1,7))
+ │ │ │ │ └── @ RequiredKeywordParameterNode (location: (1,3)-(1,7))
│ │ │ │ ├── name: :a
│ │ │ │ ├── name_loc: (1,3)-(1,5) = "a:"
│ │ │ │ └── value:
@@ -43,10 +43,9 @@
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1)
- │ │ │ └── @ KeywordParameterNode (location: (3,3)-(3,5))
+ │ │ │ └── @ OptionalKeywordParameterNode (location: (3,3)-(3,5))
│ │ │ ├── name: :a
- │ │ │ ├── name_loc: (3,3)-(3,5) = "a:"
- │ │ │ └── value: ∅
+ │ │ │ └── name_loc: (3,3)-(3,5) = "a:"
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── locals: (length: 0)