public TypeInfo typeCheck(TypeEnv tenv) throws TypeException { TypeInfo condType = ((ASTreeTypeEx) condition()).typeCheck(tenv); condType.assertSubtypeOf(TypeInfo.INT, tenv, this); TypeInfo thenType = ((ASTreeTypeEx) thenBlock()).typeCheck(tenv); TypeInfo elseType; ASTree elseBk = elseBlock(); if (elseBk == null) elseType = TypeInfo.INT; else elseType = ((ASTreeTypeEx) elseBk).typeCheck(tenv); return thenType.union(elseType, tenv); }
public TypeInfo typeInfo(TypeEnv tenv) throws TypeException { TypeInfo condType = ((ASTreeTypeEx) condition()).typeCheck(tenv); condType.assertSubtypeOf(TypeInfo.INT, tenv, this); TypeInfo bodyType = ((ASTreeTypeEx) body()).typeCheck(tenv); return bodyType.union(TypeInfo.INT, tenv); }