From 34aa917ca4ae714ae1b184ffc03e1533f2e8d59d Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Tue, 2 Aug 2022 23:07:42 +0200 Subject: [PATCH] allow bool return type (and arguments) for asmsub / romsub --- compiler/src/prog8/compiler/astprocessing/AstChecker.kt | 6 +++--- docs/source/todo.rst | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/src/prog8/compiler/astprocessing/AstChecker.kt b/compiler/src/prog8/compiler/astprocessing/AstChecker.kt index 4a54a0121..e899e7cc7 100644 --- a/compiler/src/prog8/compiler/astprocessing/AstChecker.kt +++ b/compiler/src/prog8/compiler/astprocessing/AstChecker.kt @@ -327,8 +327,8 @@ internal class AstChecker(private val program: Program, err("number of return registers is not the isSameAs as number of return values") for(param in subroutine.parameters.zip(subroutine.asmParameterRegisters)) { if(param.second.registerOrPair in arrayOf(RegisterOrPair.A, RegisterOrPair.X, RegisterOrPair.Y)) { - if (param.first.type != DataType.UBYTE && param.first.type != DataType.BYTE) - err("parameter '${param.first.name}' should be (u)byte") + if (param.first.type != DataType.UBYTE && param.first.type != DataType.BYTE && param.first.type != DataType.BOOL) + err("parameter '${param.first.name}' should be (u)byte or bool") } else if(param.second.registerOrPair in arrayOf(RegisterOrPair.AX, RegisterOrPair.AY, RegisterOrPair.XY)) { if (param.first.type != DataType.UWORD && param.first.type != DataType.WORD @@ -342,7 +342,7 @@ internal class AstChecker(private val program: Program, } subroutine.returntypes.zip(subroutine.asmReturnvaluesRegisters).forEachIndexed { index, pair -> if(pair.second.registerOrPair in arrayOf(RegisterOrPair.A, RegisterOrPair.X, RegisterOrPair.Y)) { - if (pair.first != DataType.UBYTE && pair.first != DataType.BYTE) + if (pair.first != DataType.UBYTE && pair.first != DataType.BYTE && pair.first != DataType.BOOL) err("return value #${index + 1} should be (u)byte") } else if(pair.second.registerOrPair in arrayOf(RegisterOrPair.AX, RegisterOrPair.AY, RegisterOrPair.XY)) { diff --git a/docs/source/todo.rst b/docs/source/todo.rst index 3d2c81fe2..7af5666fe 100644 --- a/docs/source/todo.rst +++ b/docs/source/todo.rst @@ -3,6 +3,7 @@ TODO For next release ^^^^^^^^^^^^^^^^ + ...