From 373811f2bb0f20407eafeb0263d649a023987128 Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Sat, 3 Jun 2023 18:23:35 +0200 Subject: [PATCH] Report error if void result used in condition --- oscar64/InterCodeGenerator.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/oscar64/InterCodeGenerator.cpp b/oscar64/InterCodeGenerator.cpp index 3d335fb..a1fb3e6 100644 --- a/oscar64/InterCodeGenerator.cpp +++ b/oscar64/InterCodeGenerator.cpp @@ -3721,7 +3721,10 @@ void InterCodeGenerator::TranslateLogic(Declaration* procType, InterCodeProcedur ExValue vr = TranslateExpression(procType, proc, block, exp, nullptr, nullptr, inlineMapper); vr = Dereference(proc, exp, block, vr); - InterInstruction * ins = new InterInstruction(exp->mLocation, IC_BRANCH); + if (!vr.mType->IsSimpleType()) + mErrors->Error(exp->mLocation, EERR_INCOMPATIBLE_TYPES, "Not a valid condition value"); + + InterInstruction* ins = new InterInstruction(exp->mLocation, IC_BRANCH); ins->mSrc[0].mType = InterTypeOf(vr.mType); ins->mSrc[0].mTemp = vr.mTemp; block->Append(ins);