Skip to content

Commit 423c147

Browse files
committed
Fix bug in enum arithmetic
1 parent 67cf50c commit 423c147

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/nodes/eval/arithmetic.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,12 +148,12 @@ std::unique_ptr<NodeResult> ArithmeticOperationNode::evaluate(PSC::Context &ctx)
148148

149149
const PSC::EnumTypeDefinition &definition = enumVal.getDefinition(ctx);
150150
std::size_t enumSize = definition.values.size();
151-
res %= enumSize;
151+
res %= static_cast<std::make_signed_t<size_t>>(enumSize); // enumSize needs to be cast to signed type otherwise res will be cast to unsigned
152152
if (res < 0) res += enumSize;
153153

154154
std::unique_ptr<PSC::Enum> resEnum = std::make_unique<PSC::Enum>(definition.name);
155155
resEnum->idx = res;
156-
return std::make_unique<NodeResult>(std::move(resEnum), PSC::DataType::ENUM);
156+
return std::make_unique<NodeResult>(std::move(resEnum), PSC::DataType(PSC::DataType::ENUM, &definition.name));
157157
}
158158

159159
if ((leftRes->type != PSC::DataType::INTEGER && leftRes->type != PSC::DataType::REAL)

0 commit comments

Comments
 (0)