Return 64-bit results from expreval
MODIFY
src/assembler/assembler_defines.h
src/assembler/assembler_defines.h
@@ -30,7 +30,7 @@ using LineTokens = QVector<Token>;
using LineTokensVec = std::vector<LineTokens>;
using Symbols = std::set<Symbol>;
using DirectiveLinePair = std::pair<QString, LineTokens>;
-using SymbolMap = std::map<Symbol, uint32_t>;
+using SymbolMap = std::map<Symbol, int64_t>;
using HandleDirectiveRes = std::variant<Error, std::optional<QByteArray>>;
struct TokenizedSrcLine {
Symbols symbols;

MODIFY
src/assembler/expreval.cpp
src/assembler/expreval.cpp
@@ -214,7 +214,7 @@ ExprRes parseLeft(const QString& s, int& pos, int& depth) {
}
}
-long evaluate(const std::shared_ptr<Expr>& expr, const SymbolMap* variables) {
+int64_t evaluate(const std::shared_ptr<Expr>& expr, const SymbolMap* variables) {
// There is a bug in GCC for variant visitors on incomplete variant types (recursive), So instead we'll macro
// our way towards something that looks like a pattern match for the variant type.
IfExpr(Add, v) { return evaluate(v->lhs, variables) + evaluate(v->rhs, variables); }

MODIFY
src/assembler/expreval.h
src/assembler/expreval.h
@@ -11,7 +11,7 @@ namespace Assembler {
extern const QRegularExpression s_exprOperatorsRegex;
extern const QString s_exprOperators;
extern const QString s_exprTokens;
-using ExprEvalRes = std::variant<Error, long>;
+using ExprEvalRes = std::variant<Error, int64_t>;
/**
* @brief evaluate

Return 64-bit results from expreval