Example #1
0
 @Override
 public Type typecheck(Environment env, Optional<Type> expected) {
   Type lastType = new Unit();
   for (TypedAST t : exps) {
     if (t == null) continue;
     lastType = t.typecheck(env, (exps.getLast() == t) ? expected : Optional.empty());
     if (t instanceof EnvironmentExtender) env = ((EnvironmentExtender) t).extend(env, env);
   }
   retType = lastType;
   return lastType;
 }