From 9ef32e405cfea1b44183c6c6c8cc91953ea0a09b Mon Sep 17 00:00:00 2001 From: Rangi42 Date: Sun, 20 Jul 2025 15:16:53 -0400 Subject: [PATCH] Combine two places that did `REPT` chain printing --- include/asm/fstack.hpp | 1 + src/asm/fstack.cpp | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/include/asm/fstack.hpp b/include/asm/fstack.hpp index b1654077..f6b0cb56 100644 --- a/include/asm/fstack.hpp +++ b/include/asm/fstack.hpp @@ -44,6 +44,7 @@ struct FileStackNode { : type(type_), data(data_) {} std::string const &dump(uint32_t curLineNo) const; + std::string reptChain() const; }; extern size_t maxRecursionDepth; diff --git a/src/asm/fstack.cpp b/src/asm/fstack.cpp index b643022e..8ef4afbd 100644 --- a/src/asm/fstack.cpp +++ b/src/asm/fstack.cpp @@ -49,16 +49,23 @@ static std::vector includePaths = {""}; static std::deque preIncludeNames; +std::string FileStackNode::reptChain() const { + std::string chain; + std::vector const &nodeIters = iters(); + for (uint32_t i = nodeIters.size(); i--;) { + chain.append("::REPT~"); + chain.append(std::to_string(nodeIters[i])); + } + return chain; +} + std::string const &FileStackNode::dump(uint32_t curLineNo) const { if (std::holds_alternative>(data)) { assume(parent); // REPT nodes use their parent's name std::string const &lastName = parent->dump(lineNo); fputs(" -> ", stderr); fputs(lastName.c_str(), stderr); - std::vector const &nodeIters = iters(); - for (uint32_t i = nodeIters.size(); i--;) { - fprintf(stderr, "::REPT~%" PRIu32, nodeIters[i]); - } + fputs(reptChain().c_str(), stderr); fprintf(stderr, "(%" PRIu32 ")", curLineNo); return lastName; } else { @@ -248,11 +255,7 @@ static void newMacroContext(Symbol const ¯o, std::shared_ptr macr } } if (macro.src->type == NODE_REPT) { - std::vector const &srcIters = macro.src->iters(); - for (uint32_t i = srcIters.size(); i--;) { - fileInfoName.append("::REPT~"); - fileInfoName.append(std::to_string(srcIters[i])); - } + fileInfoName.append(macro.src->reptChain()); } fileInfoName.append("::"); fileInfoName.append(macro.name);