llvm::ArrayRef<TopLevelItemPtr> desugarEvalTopLevel(EvalTopLevelPtr eval, EnvPtr env) { if (eval->evaled) return eval->value; else { SourcePtr source = evalToSource(eval->location, eval->args, env); parseTopLevelItems(source, 0, unsigned(source->size()), eval->value, eval->module); eval->evaled = true; return eval->value; } }
ExprListPtr desugarEvalExpr(EvalExprPtr eval, EnvPtr env, CompilerState* cst) { if (eval->evaled) return eval->value; else { SourcePtr source = evalToSource(eval->location, new ExprList(eval->args), env, cst); eval->value = parseExprList(source, 0, unsigned(source->size()), cst); eval->evaled = true; return eval->value; } }
llvm::ArrayRef<StatementPtr> desugarEvalStatement(EvalStatementPtr eval, EnvPtr env) { if (eval->evaled) return eval->value; else { SourcePtr source = evalToSource(eval->location, eval->args, env); parseStatements(source, 0, unsigned(source->size()), eval->value); eval->evaled = true; return eval->value; } }