Do not reuse Patch struct for outputting assertions (#2184)

This commit is contained in:
Rangi authored and GitHub committed 2026-10-03 19:24:49 +02:00
1 parent 6c76606839
commit 9095c5b320
9 files changed
+427 -361

No files matched your search

+1 -1
View File
@@ -18,7 +18,7 @@ enum StateFeature { STATE_EQU, STATE_VAR, STATE_EQUS, STATE_CHAR, STATE_MACRO, N
void out_RegisterNode(std::shared_ptr<FileStackNode> node);
void out_RegisterSymbol(Symbol &sym);
void out_CreatePatch(uint32_t type, Expression const &expr, uint32_t ofs, uint32_t pcShift);
void out_CreatePatch(PatchType type, Expression const &expr, uint32_t ofs, uint32_t pcShift);
void out_CreateAssert(
AssertionType type, Expression const &expr, std::string const &message, uint32_t ofs
);
+1 -1
View File
@@ -24,7 +24,7 @@ struct Patch {
uint32_t offset;
Section *pcSection;
uint32_t pcOffset;
uint8_t type;
PatchType type;
std::vector<uint8_t> rpn;
};
+5 -3
View File
@@ -11,10 +11,12 @@
struct Symbol;
struct Assertion {
Patch patch; // Also used for its `.type`
Expression rpn;
uint32_t offset;
AssertionType type;
std::string message;
// This would be redundant with `patch.pcSection->fileSymbols`, but `section` is sometimes
// `nullptr`!
// This would be redundant with `rpn.pcSection->fileSymbols`,
// but `rpn.pcSection` is sometimes `nullptr`!
std::vector<Symbol> *fileSymbols;
};
+7 -3
View File
@@ -15,15 +15,19 @@ struct FileStackNode;
struct Section;
struct Symbol;
struct Patch {
struct Expression {
FileStackNode const *src;
uint32_t lineNo;
uint32_t offset;
Section const *pcSection;
uint32_t pcSectionID;
uint32_t pcOffset;
std::vector<uint8_t> rpn;
};
struct Patch {
Expression rpn;
uint32_t offset;
PatchType type;
std::vector<uint8_t> rpnExpression;
};
struct Section {