public IDatatype error(Computer eval, Binding b, Environment env, Producer p, IDatatype... param) { return (IDatatype) env.getVisitor().error(env.getEval(), this, param); }
public IDatatype overload(Environment env, IDatatype res, IDatatype... param) { return (IDatatype) env.getVisitor().overload(env.getEval(), this, res, param); }
@Override public IDatatype eval(Expr exp, Environment env, Producer p) { if (env.getEval() == null) { logger.error("Environment getEval() = null in: "); logger.info(exp.toString()); } IDatatype dt = ((Expression) exp).eval(this, (Binding) env.getBind(), env, p); if (dt == null) { DatatypeValue res = env.getVisitor().error(env.getEval(), exp, EMPTY); if (res != null) { return (IDatatype) res; } } return dt; }
public IDatatype overload(Computer eval, Binding b, Environment env, Producer p, IDatatype dt1, IDatatype dt2, IDatatype res) { if (env.getVisitor().overload(this, res, dt1, dt2)) { return overload(env, res, dt1, dt2); } if (res == null) { // TODO: create a vector for each error !!! return error(eval, b, env, p, dt1, dt2); } return res; }
@Override public IDatatype eval(Expr exp, Environment env, Producer p) { if (env.getEval() == null) { logger.error("Environment getEval() = null in: "); logger.info(exp.toString()); } IDatatype dt = ((Expression) exp).eval(this, (Binding) env.getBind(), env, p); if (dt == null) { DatatypeValue res = env.getVisitor().error(env.getEval(), exp, EMPTY); if (res != null) { return (IDatatype) res; } } return dt; }
return (IDatatype) env.getVisitor().datatype(param[0], param[1]);