@@ -282,6 +282,25 @@ std::unique_ptr<parser::Node> Translator::translate(pm_node_t *node) {
282
282
283
283
return make_unique<parser::Kwrestarg>(parser.translateLocation (loc), gs.enterNameUTF8 (name));
284
284
}
285
+ case PM_LOCAL_VARIABLE_READ_NODE: {
286
+ auto localVarReadNode = reinterpret_cast <pm_local_variable_read_node *>(node);
287
+ pm_location_t *loc = &localVarReadNode->base .location ;
288
+
289
+ std::string_view name = parser.resolveConstant (localVarReadNode->name );
290
+
291
+ return make_unique<parser::LVar>(parser.translateLocation (loc), gs.enterNameUTF8 (name));
292
+ }
293
+ case PM_LOCAL_VARIABLE_WRITE_NODE: {
294
+ auto localVarWriteNode = reinterpret_cast <pm_local_variable_write_node *>(node);
295
+ pm_location_t *loc = &localVarWriteNode->base .location ;
296
+ pm_location_t *nameLoc = &localVarWriteNode->name_loc ;
297
+
298
+ auto name = parser.resolveConstant (localVarWriteNode->name );
299
+ auto lhs = make_unique<parser::LVarLhs>(parser.translateLocation (nameLoc), gs.enterNameUTF8 (name));
300
+ auto rhs = translate (localVarWriteNode->value );
301
+
302
+ return make_unique<parser::Assign>(parser.translateLocation (loc), std::move (lhs), std::move (rhs));
303
+ }
285
304
case PM_MODULE_NODE: { // Modules declarations, like `module A::B::C; ...; end`
286
305
auto moduleNode = reinterpret_cast <pm_module_node *>(node);
287
306
pm_location_t *loc = &moduleNode->base .location ;
@@ -620,9 +639,7 @@ std::unique_ptr<parser::Node> Translator::translate(pm_node_t *node) {
620
639
case PM_LOCAL_VARIABLE_AND_WRITE_NODE:
621
640
case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE:
622
641
case PM_LOCAL_VARIABLE_OR_WRITE_NODE:
623
- case PM_LOCAL_VARIABLE_READ_NODE:
624
642
case PM_LOCAL_VARIABLE_TARGET_NODE:
625
- case PM_LOCAL_VARIABLE_WRITE_NODE:
626
643
case PM_MATCH_LAST_LINE_NODE:
627
644
case PM_MATCH_PREDICATE_NODE:
628
645
case PM_MATCH_REQUIRED_NODE:
0 commit comments