From b685e6769ea49fcbc76d1ad665ce39b485e48f54 Mon Sep 17 00:00:00 2001 From: Elizabeth Mattijsen Date: Sun, 12 Mar 2023 19:17:05 +0100 Subject: [PATCH] RakuAST: fix deparse/raku of RakuAST::Name::Part::Expression Well, actually the canonicalization of RakuAST::Name::Part::Expression --- src/Raku/ast/name.rakumod | 3 ++- src/core.c/RakuAST/Raku.pm6 | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Raku/ast/name.rakumod b/src/Raku/ast/name.rakumod index defad18de9c..a9e44ab70db 100644 --- a/src/Raku/ast/name.rakumod +++ b/src/Raku/ast/name.rakumod @@ -112,7 +112,8 @@ class RakuAST::Name nqp::push_s($canon-parts, ''); } elsif nqp::istype($_, RakuAST::Name::Part::Expression) { - nqp::push_s($canon-parts, $_.expr.DEPARSE); + nqp::push_s($canon-parts, '') if nqp::elems($!parts) == 1; + nqp::push_s($canon-parts, '(' ~ $_.expr.DEPARSE ~ ')'); } else { nqp::die('canonicalize NYI for non-simple name part ' ~ $_.HOW.name($_)); diff --git a/src/core.c/RakuAST/Raku.pm6 b/src/core.c/RakuAST/Raku.pm6 index 14f05f59e81..d5d70a919c2 100644 --- a/src/core.c/RakuAST/Raku.pm6 +++ b/src/core.c/RakuAST/Raku.pm6 @@ -1290,7 +1290,13 @@ augment class RakuAST::Name::Part { } multi method raku(RakuAST::Name::Part::Expression:D: --> Str:D) { - self.^name ~ '.new(' ~ self.expr.raku ~ ')'; + my str @parts = self.^name ~ '.new('; + RakuAST::Node::indent(); + @parts.push: $*INDENT ~ self.expr.raku; + RakuAST::Node::dedent(); + @parts.push: $*INDENT ~ ")"; + + @parts.join("\n") } multi method raku(RakuAST::Name::Part::Simple:D: --> Str:D) {