diff --git a/parser/prism/Translator.cc b/parser/prism/Translator.cc index 18a0c73280a..9a12c8a8db3 100644 --- a/parser/prism/Translator.cc +++ b/parser/prism/Translator.cc @@ -257,7 +257,7 @@ unique_ptr Translator::translate(pm_node_t *node) { // parameters. So we need to extract the args vector from the Args node, and insert the locals at the end of // it. auto sorbetArgsNode = translate(up_cast(paramsNode->parameters)); - auto argsNode = dynamic_cast(sorbetArgsNode.get()); + auto argsNode = parser::cast_node(sorbetArgsNode.get()); auto sorbetShadowArgs = translateMulti(paramsNode->locals); // Sorbet's legacy parser inserts locals (Shadowargs) at the end of the the block's Args node argsNode->args.insert(argsNode->args.end(), std::make_move_iterator(sorbetShadowArgs.begin()), @@ -301,7 +301,7 @@ unique_ptr Translator::translate(pm_node_t *node) { // Handle `~[Integer]`, like `~42` // Unlike `-[Integer]`, Prism treats `~[Integer]` as a method call // But Sorbet's legacy parser treats both `~[Integer]` and `-[Integer]` as integer literals - if (name == "~" && dynamic_cast(receiver.get())) { + if (name == "~" && parser::cast_node(receiver.get())) { std::string valueString(reinterpret_cast(callNode->base.location.start), callNode->base.location.end - callNode->base.location.start); @@ -525,11 +525,11 @@ unique_ptr Translator::translate(pm_node_t *node) { // If that's the case, we need to check if the body contains an ensure or rescue clause, and if so, // we need to elevate that node to the top level of the method definition, without the Kwbegin node to // match the behavior of Sorbet's legacy parser. - auto kwbeginNode = dynamic_cast(body.get()); + auto kwbeginNode = parser::cast_node(body.get()); if (kwbeginNode != nullptr && kwbeginNode->stmts[0] != nullptr && - (dynamic_cast(kwbeginNode->stmts[0].get()) != nullptr || - dynamic_cast(kwbeginNode->stmts[0].get()) != nullptr)) { + (parser::cast_node(kwbeginNode->stmts[0].get()) || + parser::cast_node(kwbeginNode->stmts[0].get()))) { if (kwbeginNode->stmts.size() == 1) { body = move(kwbeginNode->stmts[0]); } else { @@ -1770,7 +1770,7 @@ unique_ptr Translator::translateCallWithBlock(pm_node_t *prismBloc body = translate(prismLambdaNode->body); } - if (dynamic_cast(parametersNode.get())) { + if (parser::cast_node(parametersNode.get())) { return make_unique(sendNode->loc, move(sendNode), move(parametersNode), move(body)); } else { return make_unique(sendNode->loc, move(sendNode), move(parametersNode), move(body));