better error message

This commit is contained in:
Irmen de Jong 2025-01-07 00:53:48 +01:00
parent f071c07dd9
commit 35d9412559
2 changed files with 12 additions and 9 deletions

View File

@ -619,13 +619,13 @@ internal class AstChecker(private val program: Program,
super.visit(assignment)
}
private fun numberOfReturnValuesError(actual: Int, expectedTypes: List<DataType>, position: Position) {
if(actual<expectedTypes.size) {
val missing = expectedTypes.drop(actual).joinToString(", ")
errors.err("some return values are not assigned: expected ${expectedTypes.size} got $actual, missing assignments for: $missing", position)
private fun numberOfReturnValuesError(numAssigns: Int, providedTypes: List<DataType>, position: Position) {
if(numAssigns<providedTypes.size) {
val missing = providedTypes.drop(numAssigns).joinToString(", ")
errors.err("call returns too many values: expected $numAssigns got ${providedTypes.size}, missing assignments for: $missing", position)
}
else
errors.err("too many return values are assigned: expected ${expectedTypes.size} got $actual", position)
errors.err("call returns too few values: expected $numAssigns got ${providedTypes.size}", position)
}
private fun checkMultiAssignment(assignment: Assignment, fcall: IFunctionCall?, fcallTarget: Subroutine?) {

View File

@ -4,10 +4,13 @@
main {
sub start() {
uword[10] @align64 @nosplit array1
uword[10] @align64 @split array2
cx16.r0L, cx16.r1, cx16.r2 = multiasm()
cx16.r0L = multiasm()
}
array1[2]++
array2[2]++
asmsub multiasm() -> ubyte @A, uword @R1 {
%asm {{
rts
}}
}
}