mirror of
https://github.com/irmen/prog8.git
synced 2024-10-19 07:23:56 +00:00
fix compiler crash for undefined symbol in expression
This commit is contained in:
parent
582d31263c
commit
0af5582ca7
@ -768,10 +768,10 @@ data class IdentifierReference(val nameInSource: List<String>, override val posi
|
|||||||
|
|
||||||
override fun inferType(program: Program): InferredTypes.InferredType {
|
override fun inferType(program: Program): InferredTypes.InferredType {
|
||||||
val targetStmt = targetStatement(program.namespace)
|
val targetStmt = targetStatement(program.namespace)
|
||||||
if(targetStmt is VarDecl) {
|
return if(targetStmt is VarDecl) {
|
||||||
return InferredTypes.knownFor(targetStmt.datatype)
|
InferredTypes.knownFor(targetStmt.datatype)
|
||||||
} else {
|
} else {
|
||||||
throw FatalAstException("cannot get datatype from identifier reference ${this}, pos=$position")
|
InferredTypes.InferredType.unknown()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -716,9 +716,9 @@ internal class AstChecker(private val program: Program,
|
|||||||
override fun visit(expr: BinaryExpression) {
|
override fun visit(expr: BinaryExpression) {
|
||||||
val leftIDt = expr.left.inferType(program)
|
val leftIDt = expr.left.inferType(program)
|
||||||
val rightIDt = expr.right.inferType(program)
|
val rightIDt = expr.right.inferType(program)
|
||||||
if(!leftIDt.isKnown || !rightIDt.isKnown) {
|
if(!leftIDt.isKnown || !rightIDt.isKnown)
|
||||||
throw FatalAstException("can't determine datatype of both expression operands $expr")
|
return // hopefully this error will be detected elsewhere
|
||||||
}
|
|
||||||
val leftDt = leftIDt.typeOrElse(DataType.STRUCT)
|
val leftDt = leftIDt.typeOrElse(DataType.STRUCT)
|
||||||
val rightDt = rightIDt.typeOrElse(DataType.STRUCT)
|
val rightDt = rightIDt.typeOrElse(DataType.STRUCT)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user