@@ -145,41 +145,6 @@ template <typename StoreType> StoreType Translator::nodeListToStore(const pm_nod
145145 return store;
146146}
147147
148- // Collect pattern variable assignments from a pattern node (similar to desugarPatternMatchingVars in PrismDesugar.cc)
149- // TODO: Remove this function once collectPatternMatchingVarsPrism is fully tested
150- static void collectPatternMatchingVars (ast::InsSeq::STATS_store &vars, parser::Node *node) {
151- if (auto *var = parser::NodeWithExpr::cast_node<parser::MatchVar>(node)) {
152- auto loc = var->loc ;
153- auto val = MK::RaiseUnimplemented (loc);
154- vars.emplace_back (MK::Assign (loc, var->name , move (val)));
155- } else if (auto *rest = parser::NodeWithExpr::cast_node<parser::MatchRest>(node)) {
156- collectPatternMatchingVars (vars, rest->var .get ());
157- } else if (auto *pair = parser::NodeWithExpr::cast_node<parser::Pair>(node)) {
158- collectPatternMatchingVars (vars, pair->value .get ());
159- } else if (auto *as_pattern = parser::NodeWithExpr::cast_node<parser::MatchAs>(node)) {
160- auto loc = as_pattern->as ->loc ;
161- auto name = parser::NodeWithExpr::cast_node<parser::MatchVar>(as_pattern->as .get ())->name ;
162- auto val = MK::RaiseUnimplemented (loc);
163- vars.emplace_back (MK::Assign (loc, name, move (val)));
164- collectPatternMatchingVars (vars, as_pattern->value .get ());
165- } else if (auto *array_pattern = parser::NodeWithExpr::cast_node<parser::ArrayPattern>(node)) {
166- for (auto &elt : array_pattern->elts ) {
167- collectPatternMatchingVars (vars, elt.get ());
168- }
169- } else if (auto *array_pattern = parser::NodeWithExpr::cast_node<parser::ArrayPatternWithTail>(node)) {
170- for (auto &elt : array_pattern->elts ) {
171- collectPatternMatchingVars (vars, elt.get ());
172- }
173- } else if (auto *hash_pattern = parser::NodeWithExpr::cast_node<parser::HashPattern>(node)) {
174- for (auto &elt : hash_pattern->pairs ) {
175- collectPatternMatchingVars (vars, elt.get ());
176- }
177- } else if (auto *alt_pattern = parser::NodeWithExpr::cast_node<parser::MatchAlt>(node)) {
178- collectPatternMatchingVars (vars, alt_pattern->left .get ());
179- collectPatternMatchingVars (vars, alt_pattern->right .get ());
180- }
181- }
182-
183148// Collect pattern variable assignments from a pattern node (similar to desugarPatternMatchingVars in PrismDesugar.cc)
184149void Translator::collectPatternMatchingVarsPrism (ast::InsSeq::STATS_store &vars, pm_node_t *node) {
185150 if (node == nullptr ) {
@@ -4068,30 +4033,6 @@ unique_ptr<ExprOnly> Translator::patternTranslate(pm_node_t *node) {
40684033 }
40694034}
40704035
4071- // Translates a Prism node list into a new `NodeVec` of legacy parser nodes.
4072- // This is like `translateMulti()`, but calls `patternTranslateMultiInto()` instead of `translateMultiInto()`.
4073- parser::NodeVec Translator::patternTranslateMulti (pm_node_list nodeList) {
4074- auto prismNodes = absl::MakeSpan (nodeList.nodes , nodeList.size );
4075-
4076- parser::NodeVec result;
4077-
4078- // Pre-allocate the exactly capacity we're going to need, to prevent growth reallocations.
4079- result.reserve (prismNodes.size ());
4080-
4081- patternTranslateMultiInto (result, prismNodes);
4082-
4083- return result;
4084- }
4085-
4086- // Translates the given Prism pattern-matching nodes, and appends them to the given `NodeVec` of Sorbet nodes.
4087- // This is like `translateMultiInto()`, but calls `patternTranslate()` instead of `translate()`.
4088- void Translator::patternTranslateMultiInto (NodeVec &outSorbetNodes, absl::Span<pm_node_t *> prismNodes) {
4089- for (auto &prismNode : prismNodes) {
4090- unique_ptr<parser::Node> sorbetNode = patternTranslate (prismNode);
4091- outSorbetNodes.emplace_back (move (sorbetNode));
4092- }
4093- }
4094-
40954036tuple<ast::MethodDef::PARAMS_store, ast::InsSeq::STATS_store, core::NameRef /* enclosingBlockParamName */ >
40964037Translator::desugarParametersNode (pm_parameters_node *paramsNode, core::LocOffsets location,
40974038 absl::Span<pm_node_t *> blockLocalVariables) {
0 commit comments