示例#1
0
 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);
 }
示例#2
0
 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);
 }