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 { 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()
} }
} }

View File

@ -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)