fix compiler crash on certain operands type mismatch

This commit is contained in:
Irmen de Jong 2023-05-18 22:46:00 +02:00
parent 7e734214dc
commit 7ceb76cff5

View File

@ -958,11 +958,7 @@ internal class AstChecker(private val program: Program,
} }
} }
if(expr.operator in ComparisonOperators) { if(expr.operator !in ComparisonOperators) {
if(leftDt!=rightDt && !(leftDt in ByteDatatypes && rightDt in ByteDatatypes)) {
throw FatalAstException("got comparison with different operand types: $leftDt ${expr.operator} $rightDt ${expr.position}")
}
} else {
if (leftDt == DataType.STR && rightDt == DataType.STR || leftDt in ArrayDatatypes && rightDt in ArrayDatatypes) { if (leftDt == DataType.STR && rightDt == DataType.STR || leftDt in ArrayDatatypes && rightDt in ArrayDatatypes) {
// str+str and str*number have already been const evaluated before we get here. // str+str and str*number have already been const evaluated before we get here.
errors.err("no computational or logical expressions with strings or arrays are possible", expr.position) errors.err("no computational or logical expressions with strings or arrays are possible", expr.position)