[ruby/prism] Multi-splat flag for arguments

https://github.com/ruby/prism/commit/21cb9b78ae
This commit is contained in:
Kevin Newton 2024-08-28 16:56:05 -04:00 committed by git
parent ec88979a06
commit d25833b81a
3 changed files with 8 additions and 2 deletions

View File

@ -653,6 +653,8 @@ flags:
comment: "if arguments contain keyword splat"
- name: CONTAINS_SPLAT
comment: "if arguments contain splat"
- name: CONTAINS_MULTIPLE_SPLATS
comment: "if arguments contain multiple splats"
comment: Flags for arguments nodes.
- name: ArrayNodeFlags
values:

View File

@ -2065,7 +2065,11 @@ pm_arguments_node_arguments_append(pm_arguments_node_t *node, pm_node_t *argumen
pm_node_list_append(&node->arguments, argument);
if (PM_NODE_TYPE_P(argument, PM_SPLAT_NODE)) {
pm_node_flag_set((pm_node_t *) node, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT);
if (PM_NODE_FLAG_P(node, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT)) {
pm_node_flag_set((pm_node_t *) node, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS);
} else {
pm_node_flag_set((pm_node_t *) node, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT);
}
}
}

View File

@ -1123,7 +1123,7 @@
│ ├── opening_loc: (59,7)-(59,8) = "("
│ ├── arguments:
│ │ @ ArgumentsNode (location: (59,8)-(59,25))
│ │ ├── flags: contains_splat
│ │ ├── flags: contains_splat, contains_multiple_splats
│ │ └── arguments: (length: 3)
│ │ ├── @ SplatNode (location: (59,8)-(59,13))
│ │ │ ├── flags: ∅