From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1643) id B69CA3857B86; Wed, 27 Jul 2022 15:53:38 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B69CA3857B86 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Thomas Schwinge To: gcc-cvs@gcc.gnu.org Subject: [gcc/devel/rust/master] hir/dump: simple dumping of crate attrs and adding a few todos X-Act-Checkin: gcc X-Git-Author: andrewnaguib <24280372+ndrwnaguib@users.noreply.github.com> X-Git-Refname: refs/heads/devel/rust/master X-Git-Oldrev: 65a06a817585faf7fb44fbc1c71173a00f9a407f X-Git-Newrev: 5556d29f7bc0836f2ed6413c04eca3ae055c18d7 Message-Id: <20220727155338.B69CA3857B86@sourceware.org> Date: Wed, 27 Jul 2022 15:53:38 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jul 2022 15:53:38 -0000 https://gcc.gnu.org/g:5556d29f7bc0836f2ed6413c04eca3ae055c18d7 commit 5556d29f7bc0836f2ed6413c04eca3ae055c18d7 Author: andrewnaguib <24280372+ndrwnaguib@users.noreply.github.com> Date: Tue Jul 12 12:04:50 2022 -0700 hir/dump: simple dumping of crate attrs and adding a few todos Diff: --- gcc/rust/hir/rust-hir-dump.cc | 96 ++++++++++++++++++++++++++++++++++++++----- gcc/rust/hir/rust-hir-dump.h | 2 + 2 files changed, 87 insertions(+), 11 deletions(-) diff --git a/gcc/rust/hir/rust-hir-dump.cc b/gcc/rust/hir/rust-hir-dump.cc index 506334441fd..6b36920015b 100644 --- a/gcc/rust/hir/rust-hir-dump.cc +++ b/gcc/rust/hir/rust-hir-dump.cc @@ -21,15 +21,60 @@ namespace Rust { namespace HIR { -Dump::Dump (std::ostream &stream) : stream (stream) {} +Dump::Dump (std::ostream &stream) : stream (stream), indent (0) {} void Dump::go (HIR::Crate &crate) { - // TODO: print crate inner_attrs - // TODO: print crate items - // TODO: print crate mappings - stream << crate.as_string (); + stream << "Crate" + << " " + << "{" << std::endl; + // + + indent++; + stream << std::string (indent, indent_char); + stream << "inner_attrs" + << ":" + << " " + << "["; + for (auto &attr : crate.inner_attrs) + stream << attr.as_string (); + stream << "]" + << "," << std::endl; + indent--; + + indent++; + stream << std::string (indent, indent_char); + // + + stream << "items" + << ":" + << " " + << "["; + + stream << std::string (indent, indent_char); + for (const auto &item : crate.items) + { + stream << std::endl; + item->accept_vis (*this); + } + stream << std::string (indent, indent_char); + stream << "]" + << "," << std::endl; + indent--; + // + + indent++; + stream << std::string (indent, indent_char); + stream << "node_mappings" + << ":" + << " " + << "["; + // TODO: print crate mapping attrs + stream << "]" << std::endl; + indent--; + + stream << "}" << std::endl; } void @@ -64,8 +109,14 @@ Dump::visit (QualifiedPathInType &) {} void -Dump::visit (LiteralExpr &) -{} +Dump::visit (LiteralExpr &literal_expr) +{ + indent++; + stream << std::string (indent, indent_char); + stream << "( " + literal_expr.get_literal ().as_string () + " (" + + literal_expr.get_mappings ().as_string () + "))"; + stream << "\n"; +} void Dump::visit (BorrowExpr &) {} @@ -152,8 +203,18 @@ void Dump::visit (ClosureExprInner &) {} void -Dump::visit (BlockExpr &) -{} +Dump::visit (BlockExpr &block_expr) +{ + stream << "BlockExpr" + << ":" + << " " + << "["; + indent++; + // TODO: print statements + // TODO: print tail expression if exists + stream << "]"; + indent--; +} void Dump::visit (ClosureExprInnerTyped &) {} @@ -264,8 +325,21 @@ void Dump::visit (UseDeclaration &) {} void -Dump::visit (Function &) -{} +Dump::visit (Function &function) +{ + indent++; + stream << std::string (indent, indent_char); + stream << "Function" + << " "; + stream << "{" << std::endl; + // TODO: print function params + stream << std::string (indent, indent_char); + stream << "}" << std::endl; + // TODO: get function definition and visit block + + stream << std::endl; + indent--; +} void Dump::visit (TypeAlias &) {} diff --git a/gcc/rust/hir/rust-hir-dump.h b/gcc/rust/hir/rust-hir-dump.h index 4569c90233b..8905d0ce641 100644 --- a/gcc/rust/hir/rust-hir-dump.h +++ b/gcc/rust/hir/rust-hir-dump.h @@ -34,6 +34,8 @@ public: private: std::ostream &stream; + std::size_t indent; // current indentation level + char indent_char = '\t'; virtual void visit (IdentifierExpr &) override; virtual void visit (Lifetime &) override;