From c6e13ae2a3fa193281c78606b5edd6fd0f65273c Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Sat, 22 Aug 2020 17:12:09 +0200 Subject: [PATCH] better error message --- .../src/prog8/ast/processing/AstChecker.kt | 5 ++++- .../ast/processing/AstIdentifiersChecker.kt | 3 +++ examples/test.p8 | 22 ++----------------- 3 files changed, 9 insertions(+), 21 deletions(-) diff --git a/compiler/src/prog8/ast/processing/AstChecker.kt b/compiler/src/prog8/ast/processing/AstChecker.kt index f65007093..08a712efa 100644 --- a/compiler/src/prog8/ast/processing/AstChecker.kt +++ b/compiler/src/prog8/ast/processing/AstChecker.kt @@ -1039,7 +1039,10 @@ internal class AstChecker(private val program: Program, val targetStatement = target.targetStatement(program.namespace) if(targetStatement is Label || targetStatement is Subroutine || targetStatement is BuiltinFunctionStatementPlaceholder) return targetStatement - errors.err("undefined function or subroutine: ${target.nameInSource.joinToString(".")}", statement.position) + else if(targetStatement==null) + errors.err("undefined function or subroutine: ${target.nameInSource.joinToString(".")}", statement.position) + else + errors.err("cannot call that: ${target.nameInSource.joinToString(".")}", statement.position) return null } diff --git a/compiler/src/prog8/ast/processing/AstIdentifiersChecker.kt b/compiler/src/prog8/ast/processing/AstIdentifiersChecker.kt index c2ebc3f5d..524ce30c3 100644 --- a/compiler/src/prog8/ast/processing/AstIdentifiersChecker.kt +++ b/compiler/src/prog8/ast/processing/AstIdentifiersChecker.kt @@ -22,6 +22,9 @@ internal class AstIdentifiersChecker(private val program: Program, private val e } override fun visit(block: Block) { + if(block.name in CompilationTarget.machine.opcodeNames) + errors.err("can't use a cpu opcode name as a symbol: '${block.name}'", block.position) + val existing = blocks[block.name] if(existing!=null) nameError(block.name, block.position, existing) diff --git a/examples/test.p8 b/examples/test.p8 index bf0f83060..2b44b4958 100644 --- a/examples/test.p8 +++ b/examples/test.p8 @@ -10,28 +10,10 @@ main { sub start() { byte nop2 - nop2=4 - nop2++ - foo.xxx() - derp: - goto main.nop2 - main.nop2() - } - - sub nop2 () { - c64.CHROUT('\n') + ; nop2() ; better error + nop2() } } -foo { - - sub xxx() { - - bar: - goto bar - } - - -}