Skip to content

Commit

Permalink
Constants on keyword parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
kddnewton committed Sep 6, 2023
1 parent 2cd9a67 commit d2d4f25
Show file tree
Hide file tree
Showing 36 changed files with 94 additions and 48 deletions.
2 changes: 2 additions & 0 deletions config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1558,6 +1558,8 @@ nodes:
^^^^
- name: KeywordParameterNode
fields:
- name: name
type: constant
- name: name_loc
type: location
- name: value
Expand Down
4 changes: 2 additions & 2 deletions lib/yarp.rb
Original file line number Diff line number Diff line change
Expand Up @@ -542,8 +542,8 @@ def self.yarp_locals(source)
*params.optionals.map(&:name),
*((params.rest.name ? params.rest.name.to_sym : :*) if params.rest && params.rest.operator != ","),
*params.posts.grep(RequiredParameterNode).map(&:name),
*params.keywords.reject(&:value).map { |param| param.name.chomp(":").to_sym },
*params.keywords.select(&:value).map { |param| param.name.chomp(":").to_sym }
*params.keywords.reject(&:value).map(&:name),
*params.keywords.select(&:value).map(&:name)
]

# TODO: When we get a ... parameter, we should be pushing * and &
Expand Down
1 change: 1 addition & 0 deletions src/yarp.c
Original file line number Diff line number Diff line change
Expand Up @@ -3069,6 +3069,7 @@ yp_keyword_parameter_node_create(yp_parser_t *parser, const yp_token_t *name, yp
.end = value == NULL ? name->end : value->location.end
},
},
.name = yp_parser_constant_id_location(parser, name->start, name->end - 1),
.name_loc = YP_LOCATION_TOKEN_VALUE(name),
.value = value
};
Expand Down
10 changes: 5 additions & 5 deletions test/yarp/errors_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -716,7 +716,7 @@ def test_keywords_parameters_before_required_parameters
[],
[RequiredParameterNode(:a)],
nil,
[KeywordParameterNode(Location(), nil)],
[KeywordParameterNode(:b, Location(), nil)],
nil,
nil
),
Expand All @@ -743,7 +743,7 @@ def test_rest_keywords_parameters_before_required_parameters
[],
[],
nil,
[KeywordParameterNode(Location(), nil)],
[KeywordParameterNode(:b, Location(), nil)],
KeywordRestParameterNode(Location(), Location()),
nil
),
Expand Down Expand Up @@ -790,7 +790,7 @@ def test_multiple_error_in_parameters_order
[],
[RequiredParameterNode(:a)],
nil,
[KeywordParameterNode(Location(), nil)],
[KeywordParameterNode(:b, Location(), nil)],
KeywordRestParameterNode(Location(), Location()),
nil
),
Expand Down Expand Up @@ -819,7 +819,7 @@ def test_switching_to_optional_arguments_twice
[],
[RequiredParameterNode(:a)],
nil,
[KeywordParameterNode(Location(), nil)],
[KeywordParameterNode(:b, Location(), nil)],
KeywordRestParameterNode(Location(), Location()),
nil
),
Expand Down Expand Up @@ -848,7 +848,7 @@ def test_switching_to_named_arguments_twice
[],
[RequiredParameterNode(:a)],
nil,
[KeywordParameterNode(Location(), nil)],
[KeywordParameterNode(:b, Location(), nil)],
KeywordRestParameterNode(Location(), Location()),
nil
),
Expand Down
4 changes: 3 additions & 1 deletion test/yarp/snapshots/blocks.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions test/yarp/snapshots/lambda.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 11 additions & 5 deletions test/yarp/snapshots/methods.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions test/yarp/snapshots/procs.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion test/yarp/snapshots/seattlerb/args_kw_block.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion test/yarp/snapshots/seattlerb/block_kw.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion test/yarp/snapshots/seattlerb/block_kw__required.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions test/yarp/snapshots/seattlerb/block_kwarg_lvar.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions test/yarp/snapshots/seattlerb/block_kwarg_lvar_multiple.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions test/yarp/snapshots/seattlerb/defn_kwarg_kwarg.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion test/yarp/snapshots/seattlerb/defn_kwarg_kwsplat.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion test/yarp/snapshots/seattlerb/defn_kwarg_kwsplat_anon.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions test/yarp/snapshots/seattlerb/defn_kwarg_lvar.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion test/yarp/snapshots/seattlerb/defn_kwarg_no_parens.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion test/yarp/snapshots/seattlerb/defn_kwarg_val.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion test/yarp/snapshots/seattlerb/defs_kwarg.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion test/yarp/snapshots/seattlerb/f_kw.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion test/yarp/snapshots/seattlerb/f_kw__required.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion test/yarp/snapshots/seattlerb/iter_kwarg.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion test/yarp/snapshots/seattlerb/iter_kwarg_kwsplat.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions test/yarp/snapshots/seattlerb/required_kwarg_no_value.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit d2d4f25

Please sign in to comment.