Skip to content

Commit c72811b

Browse files
amomchilovthomasmarshalljesse-shopify
committed
Simplify translateNumberedParametersNode() params
Co-authored-by: Thomas Marshall <[email protected]> Co-authored-by: Jesse Johnson <[email protected]>
1 parent df1d6cc commit c72811b

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

parser/prism/Translator.cc

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1833,16 +1833,14 @@ unique_ptr<parser::Node> Translator::translate(pm_node_t *node) {
18331833

18341834
case PM_NUMBERED_PARAMETERS_NODE: { // The params in a PM_BLOCK_NODE with numbered params
18351835
// Like the implicit `|_1, _2, _3|` in `foo { _3 }`
1836-
auto numberedParamsNode = down_cast<pm_numbered_parameters_node>(blockNode->parameters);
18371836

18381837
// Use a 0-length loc just after the `do` or `{` token, as if you had written:
18391838
// do|_1, _2| ... end`
18401839
// ^
18411840
// {|_1, _2| ... }`
18421841
// ^
18431842

1844-
blockParamsStore = translateNumberedParametersNode(
1845-
numberedParamsNode, down_cast<pm_statements_node>(blockNode->body));
1843+
blockParamsStore = translateNumberedParametersNode(blockNode);
18461844

18471845
break;
18481846
}
@@ -4428,9 +4426,12 @@ Translator::findNumberedParamsUsageLocs(core::LocOffsets loc, pm_statements_node
44284426
return result;
44294427
}
44304428

4431-
ast::MethodDef::PARAMS_store
4432-
Translator::translateNumberedParametersNode(pm_numbered_parameters_node *numberedParamsNode,
4433-
pm_statements_node_t *statements) {
4429+
// Desugaring numbered parameters requires access to the whole block node (not just its parameters node),
4430+
// because we need to walk through its body to find the locations of the usages of the numbered parameters.
4431+
ast::MethodDef::PARAMS_store Translator::translateNumberedParametersNode(pm_block_node *blockNode) {
4432+
auto numberedParamsNode = down_cast<pm_numbered_parameters_node>(blockNode->parameters);
4433+
auto statements = down_cast<pm_statements_node>(blockNode->body);
4434+
44344435
auto location = translateLoc(numberedParamsNode->base.location);
44354436

44364437
auto paramCount = numberedParamsNode->maximum;

parser/prism/Translator.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,7 @@ class Translator final {
101101
std::array<core::LocOffsets, 9> findNumberedParamsUsageLocs(core::LocOffsets loc, pm_statements_node *statements,
102102
uint8_t maxParamNumber);
103103

104-
ast::MethodDef::PARAMS_store translateNumberedParametersNode(pm_numbered_parameters_node *numberedParamsNode,
105-
pm_statements_node_t *statements);
104+
ast::MethodDef::PARAMS_store translateNumberedParametersNode(pm_block_node *blockNode);
106105

107106
ast::ExpressionPtr desugarSymbolProc(pm_symbol_node *symbol);
108107

0 commit comments

Comments
 (0)