mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 18:22:07 +00:00
Combine two places that did REPT chain printing
This commit is contained in:
@@ -44,6 +44,7 @@ struct FileStackNode {
|
|||||||
: type(type_), data(data_) {}
|
: type(type_), data(data_) {}
|
||||||
|
|
||||||
std::string const &dump(uint32_t curLineNo) const;
|
std::string const &dump(uint32_t curLineNo) const;
|
||||||
|
std::string reptChain() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern size_t maxRecursionDepth;
|
extern size_t maxRecursionDepth;
|
||||||
|
|||||||
@@ -49,16 +49,23 @@ static std::vector<std::string> includePaths = {""};
|
|||||||
|
|
||||||
static std::deque<std::string> preIncludeNames;
|
static std::deque<std::string> preIncludeNames;
|
||||||
|
|
||||||
|
std::string FileStackNode::reptChain() const {
|
||||||
|
std::string chain;
|
||||||
|
std::vector<uint32_t> 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 {
|
std::string const &FileStackNode::dump(uint32_t curLineNo) const {
|
||||||
if (std::holds_alternative<std::vector<uint32_t>>(data)) {
|
if (std::holds_alternative<std::vector<uint32_t>>(data)) {
|
||||||
assume(parent); // REPT nodes use their parent's name
|
assume(parent); // REPT nodes use their parent's name
|
||||||
std::string const &lastName = parent->dump(lineNo);
|
std::string const &lastName = parent->dump(lineNo);
|
||||||
fputs(" -> ", stderr);
|
fputs(" -> ", stderr);
|
||||||
fputs(lastName.c_str(), stderr);
|
fputs(lastName.c_str(), stderr);
|
||||||
std::vector<uint32_t> const &nodeIters = iters();
|
fputs(reptChain().c_str(), stderr);
|
||||||
for (uint32_t i = nodeIters.size(); i--;) {
|
|
||||||
fprintf(stderr, "::REPT~%" PRIu32, nodeIters[i]);
|
|
||||||
}
|
|
||||||
fprintf(stderr, "(%" PRIu32 ")", curLineNo);
|
fprintf(stderr, "(%" PRIu32 ")", curLineNo);
|
||||||
return lastName;
|
return lastName;
|
||||||
} else {
|
} else {
|
||||||
@@ -248,11 +255,7 @@ static void newMacroContext(Symbol const ¯o, std::shared_ptr<MacroArgs> macr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (macro.src->type == NODE_REPT) {
|
if (macro.src->type == NODE_REPT) {
|
||||||
std::vector<uint32_t> const &srcIters = macro.src->iters();
|
fileInfoName.append(macro.src->reptChain());
|
||||||
for (uint32_t i = srcIters.size(); i--;) {
|
|
||||||
fileInfoName.append("::REPT~");
|
|
||||||
fileInfoName.append(std::to_string(srcIters[i]));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
fileInfoName.append("::");
|
fileInfoName.append("::");
|
||||||
fileInfoName.append(macro.name);
|
fileInfoName.append(macro.name);
|
||||||
|
|||||||
Reference in New Issue
Block a user