ControlFlowGraph.cpp 767 B

1234567891011121314151617181920212223242526272829
  1. /*
  2. * Copyright (c) 2023, Dan Klishch <danilklishch@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <AK/StringBuilder.h>
  7. #include "AST/AST.h"
  8. #include "Compiler/ControlFlowGraph.h"
  9. using namespace JSSpecCompiler;
  10. ErrorOr<void> AK::Formatter<ControlFlowGraph>::format(FormatBuilder& format_builder, ControlFlowGraph const& control_flow_graph)
  11. {
  12. auto& builder = format_builder.builder();
  13. for (auto const& block : control_flow_graph.blocks) {
  14. builder.appendff("{}:\n", block->m_index);
  15. for (auto const& expression : block->m_expressions)
  16. builder.appendff("{}", expression);
  17. builder.appendff("{}\n", Tree(block->m_continuation));
  18. }
  19. // Remove trailing \n
  20. builder.trim(1);
  21. return {};
  22. }