added error message when not using returnvalue of a functioncall

This commit is contained in:
Irmen de Jong 2020-12-27 02:28:40 +01:00
parent b40e1eabb9
commit d7d7147d43
2 changed files with 7 additions and 1 deletions

View File

@ -11,6 +11,7 @@ import prog8.compiler.target.C64Target
import prog8.compiler.target.CompilationTarget
import prog8.compiler.target.Cx16Target
import prog8.functions.BuiltinFunctions
import prog8.functions.builtinFunctionReturnType
import java.io.File
internal class AstChecker(private val program: Program,
@ -972,6 +973,11 @@ internal class AstChecker(private val program: Program,
else
errors.warn("result values of subroutine call are discarded (use void?)", functionCallStatement.position)
}
else if(targetStatement is BuiltinFunctionStatementPlaceholder) {
val rt = builtinFunctionReturnType(targetStatement.name, functionCallStatement.args, program)
if(rt.isKnown)
errors.warn("result value of a function call is discarded (use void?)", functionCallStatement.position)
}
}
if(functionCallStatement.target.nameInSource.last() == "sort") {

View File

@ -145,9 +145,9 @@ private val functionSignatures: List<FSignature> = listOf(
FSignature("clear_irqd" , false, emptyList(), null),
FSignature("read_flags" , true, emptyList(), DataType.UBYTE),
FSignature("progend" , true, emptyList(), DataType.UWORD),
FSignature("memory" , true, listOf(FParam("name", setOf(DataType.STR)), FParam("size", setOf(DataType.UWORD))), DataType.UWORD),
FSignature("target" , true, emptyList(), DataType.UBYTE, ::builtinTarget),
FSignature("swap" , false, listOf(FParam("first", NumericDatatypes), FParam("second", NumericDatatypes)), null),
FSignature("memory" , false, listOf(FParam("name", setOf(DataType.STR)), FParam("size", setOf(DataType.UWORD))), DataType.UWORD),
FSignature("memcopy" , false, listOf(
FParam("from", IterableDatatypes + DataType.UWORD),
FParam("to", IterableDatatypes + DataType.UWORD),