From 1749b46b75378c4aa8d2866a2e372946d7f9ab54 Mon Sep 17 00:00:00 2001 From: Alexander Momchilov Date: Thu, 8 Aug 2024 12:02:25 -0400 Subject: [PATCH] Implement translation for `self` --- parser/prism/Translator.cc | 7 ++++++- test/prism_regression/self.parse-tree.exp | 2 ++ test/prism_regression/self.rb | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 test/prism_regression/self.parse-tree.exp create mode 100644 test/prism_regression/self.rb diff --git a/parser/prism/Translator.cc b/parser/prism/Translator.cc index cbb4c1b61cb..1ae362e77d3 100644 --- a/parser/prism/Translator.cc +++ b/parser/prism/Translator.cc @@ -419,6 +419,12 @@ std::unique_ptr Translator::translate(pm_node_t *node) { return make_unique(parser.translateLocation(loc), std::move(returnValues)); } + case PM_SELF_NODE: { + auto selfNode = reinterpret_cast(node); + pm_location_t *loc = &selfNode->base.location; + + return make_unique(parser.translateLocation(loc)); + } case PM_STATEMENTS_NODE: { auto inlineIfSingle = true; return translateStatements(reinterpret_cast(node), inlineIfSingle); @@ -584,7 +590,6 @@ std::unique_ptr Translator::translate(pm_node_t *node) { case PM_RESCUE_MODIFIER_NODE: case PM_RESCUE_NODE: case PM_RETRY_NODE: - case PM_SELF_NODE: case PM_SHAREABLE_CONSTANT_NODE: case PM_SINGLETON_CLASS_NODE: case PM_SOURCE_ENCODING_NODE: diff --git a/test/prism_regression/self.parse-tree.exp b/test/prism_regression/self.parse-tree.exp new file mode 100644 index 00000000000..75ed70eb35e --- /dev/null +++ b/test/prism_regression/self.parse-tree.exp @@ -0,0 +1,2 @@ +Self { +} diff --git a/test/prism_regression/self.rb b/test/prism_regression/self.rb new file mode 100644 index 00000000000..9e8e945a85f --- /dev/null +++ b/test/prism_regression/self.rb @@ -0,0 +1,3 @@ +# typed: strict + +self