fix compiler crash for undefined symbol in expression

This commit is contained in:
Irmen de Jong 2020-03-27 23:09:46 +01:00
parent 582d31263c
commit 0af5582ca7
2 changed files with 6 additions and 6 deletions

View File

@ -768,10 +768,10 @@ data class IdentifierReference(val nameInSource: List<String>, override val posi
override fun inferType(program: Program): InferredTypes.InferredType {
val targetStmt = targetStatement(program.namespace)
if(targetStmt is VarDecl) {
return InferredTypes.knownFor(targetStmt.datatype)
return if(targetStmt is VarDecl) {
InferredTypes.knownFor(targetStmt.datatype)
} else {
throw FatalAstException("cannot get datatype from identifier reference ${this}, pos=$position")
InferredTypes.InferredType.unknown()
}
}

View File

@ -716,9 +716,9 @@ internal class AstChecker(private val program: Program,
override fun visit(expr: BinaryExpression) {
val leftIDt = expr.left.inferType(program)
val rightIDt = expr.right.inferType(program)
if(!leftIDt.isKnown || !rightIDt.isKnown) {
throw FatalAstException("can't determine datatype of both expression operands $expr")
}
if(!leftIDt.isKnown || !rightIDt.isKnown)
return // hopefully this error will be detected elsewhere
val leftDt = leftIDt.typeOrElse(DataType.STRUCT)
val rightDt = rightIDt.typeOrElse(DataType.STRUCT)