@Override
protected Type doTypecheck(Environment env) {
Environment extEnv = env;
for (NameBinding bind : argNames) {
extEnv = extEnv.extend(bind);
}
if (body != null) {
Type bodyType = body.typecheck(extEnv, Optional.of(((Arrow)type).getResult())); // Can be null for def inside type!
type = TypeResolver.resolve(type, env);