parent
7bbbb8f063
commit
388345f35f
12
pkgs/racket-test-core/tests/racket/cmdline-eval.rkt
Normal file
12
pkgs/racket-test-core/tests/racket/cmdline-eval.rkt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#lang racket/base
|
||||||
|
(require racket/system
|
||||||
|
compiler/find-exe)
|
||||||
|
|
||||||
|
;; Make sure that `-e` interleaves expansion and evaluation
|
||||||
|
|
||||||
|
(define o (open-output-bytes))
|
||||||
|
(parameterize ([current-output-port o])
|
||||||
|
(unless (system* (find-exe) "-e" "(begin (define-syntax-rule (m) 10) (m))")
|
||||||
|
(error "run failed")))
|
||||||
|
(unless (equal? "10" (read-line (open-input-bytes (get-output-bytes o))))
|
||||||
|
(error "output failed"))
|
|
@ -3,6 +3,8 @@
|
||||||
"common/module-path.rkt"
|
"common/module-path.rkt"
|
||||||
"namespace/namespace.rkt"
|
"namespace/namespace.rkt"
|
||||||
"eval/main.rkt"
|
"eval/main.rkt"
|
||||||
|
(only-in "eval/api.rkt"
|
||||||
|
[eval eval-top-level])
|
||||||
"eval/dynamic-require.rkt"
|
"eval/dynamic-require.rkt"
|
||||||
"eval/reflect.rkt"
|
"eval/reflect.rkt"
|
||||||
"eval/load.rkt"
|
"eval/load.rkt"
|
||||||
|
@ -43,6 +45,9 @@
|
||||||
eval
|
eval
|
||||||
read
|
read
|
||||||
|
|
||||||
|
;; Uses handlers:
|
||||||
|
eval-top-level
|
||||||
|
|
||||||
load
|
load
|
||||||
load/use-compiled
|
load/use-compiled
|
||||||
load-extension
|
load-extension
|
||||||
|
|
|
@ -3546,7 +3546,7 @@ Scheme_Object *scheme_compile_for_eval(Scheme_Object *form, Scheme_Env *env)
|
||||||
Scheme_Object *scheme_eval(Scheme_Object *obj, Scheme_Env *env)
|
Scheme_Object *scheme_eval(Scheme_Object *obj, Scheme_Env *env)
|
||||||
{
|
{
|
||||||
Scheme_Object *eval_proc, *a[2];
|
Scheme_Object *eval_proc, *a[2];
|
||||||
eval_proc = scheme_get_startup_export("eval");
|
eval_proc = scheme_get_startup_export("eval-top-level");
|
||||||
a[0] = obj;
|
a[0] = obj;
|
||||||
a[1] = env->namespace;
|
a[1] = env->namespace;
|
||||||
return scheme_apply(eval_proc, 2, a);
|
return scheme_apply(eval_proc, 2, a);
|
||||||
|
@ -3555,7 +3555,7 @@ Scheme_Object *scheme_eval(Scheme_Object *obj, Scheme_Env *env)
|
||||||
Scheme_Object *scheme_eval_multi(Scheme_Object *obj, Scheme_Env *env)
|
Scheme_Object *scheme_eval_multi(Scheme_Object *obj, Scheme_Env *env)
|
||||||
{
|
{
|
||||||
Scheme_Object *eval_proc, *a[2];
|
Scheme_Object *eval_proc, *a[2];
|
||||||
eval_proc = scheme_get_startup_export("eval");
|
eval_proc = scheme_get_startup_export("eval-top-level");
|
||||||
a[0] = obj;
|
a[0] = obj;
|
||||||
a[1] = env->namespace;
|
a[1] = env->namespace;
|
||||||
return scheme_apply_multi(eval_proc, 2, a);
|
return scheme_apply_multi(eval_proc, 2, a);
|
||||||
|
@ -3569,10 +3569,8 @@ static Scheme_Object *finish_eval_with_prompt(void *_data, int argc, Scheme_Obje
|
||||||
|
|
||||||
Scheme_Object *scheme_eval_with_prompt(Scheme_Object *obj, Scheme_Env *env)
|
Scheme_Object *scheme_eval_with_prompt(Scheme_Object *obj, Scheme_Env *env)
|
||||||
{
|
{
|
||||||
Scheme_Object *expr;
|
|
||||||
expr = scheme_compile_for_eval(obj, env);
|
|
||||||
return scheme_call_with_prompt(finish_eval_with_prompt,
|
return scheme_call_with_prompt(finish_eval_with_prompt,
|
||||||
scheme_make_pair(expr, (Scheme_Object *)env));
|
scheme_make_pair(obj, (Scheme_Object *)env));
|
||||||
}
|
}
|
||||||
|
|
||||||
static Scheme_Object *finish_eval_multi_with_prompt(void *_data, int argc, Scheme_Object **argv)
|
static Scheme_Object *finish_eval_multi_with_prompt(void *_data, int argc, Scheme_Object **argv)
|
||||||
|
@ -3583,10 +3581,8 @@ static Scheme_Object *finish_eval_multi_with_prompt(void *_data, int argc, Schem
|
||||||
|
|
||||||
Scheme_Object *scheme_eval_multi_with_prompt(Scheme_Object *obj, Scheme_Env *env)
|
Scheme_Object *scheme_eval_multi_with_prompt(Scheme_Object *obj, Scheme_Env *env)
|
||||||
{
|
{
|
||||||
Scheme_Object *expr;
|
|
||||||
expr = scheme_compile_for_eval(obj, env);
|
|
||||||
return scheme_call_with_prompt_multi(finish_eval_multi_with_prompt,
|
return scheme_call_with_prompt_multi(finish_eval_multi_with_prompt,
|
||||||
scheme_make_pair(expr, (Scheme_Object *)env));
|
scheme_make_pair(obj, (Scheme_Object *)env));
|
||||||
}
|
}
|
||||||
|
|
||||||
Scheme_Object *_scheme_eval_compiled(Scheme_Object *obj, Scheme_Env *env)
|
Scheme_Object *_scheme_eval_compiled(Scheme_Object *obj, Scheme_Env *env)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user