emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/geiser-racket c6b4c09 155/191: Racket: fix for evaluations


From: Philip Kaludercic
Subject: [nongnu] elpa/geiser-racket c6b4c09 155/191: Racket: fix for evaluations inside typed/racket modules
Date: Sun, 1 Aug 2021 18:32:19 -0400 (EDT)

branch: elpa/geiser-racket
commit c6b4c09f2e7b5408f9787d50025464ccafc41e86
Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
Commit: Jose Antonio Ortega Ruiz <jao@gnu.org>

    Racket: fix for evaluations inside typed/racket modules
    
    When evaluating (re)definitions in a typed module, it's necessary that
    the form evaluated is wrapped with #%top-interaction, so that typed
    racket's redefinition of that macro enters into play and the system
    records the type information of the new value.
    
    Many thanks to Sam Tobin-Hochstadt for the tip, and for his encouraging
    words.
---
 geiser/eval.rkt | 7 ++++---
 geiser/user.rkt | 4 ++--
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/geiser/eval.rkt b/geiser/eval.rkt
index 752a405..0a391e8 100644
--- a/geiser/eval.rkt
+++ b/geiser/eval.rkt
@@ -1,6 +1,6 @@
 ;;; eval.rkt -- evaluation
 
-;; Copyright (C) 2009, 2010, 2011, 2012, 2013 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Jose Antonio Ortega Ruiz
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the Modified BSD License. You should
@@ -52,10 +52,11 @@
                  (call-with-values thunk set-last-result)))))])
     (append last-result `(,(cons 'output output)))))
 
-(define (eval-in form spec lang)
+(define (eval-in form spec lang . non-top)
   (write (call-with-result
           (lambda ()
-            (eval form (module-spec->namespace spec lang)))))
+            (eval (if (null? non-top) (cons '#%top-interaction form) form)
+                  (module-spec->namespace spec lang)))))
   (newline))
 
 (define (load-file file)
diff --git a/geiser/user.rkt b/geiser/user.rkt
index d8ac0b2..a35574b 100644
--- a/geiser/user.rkt
+++ b/geiser/user.rkt
@@ -1,6 +1,6 @@
 ;;; user.rkt -- global bindings visible to geiser users
 
-;; Copyright (C) 2010, 2011, 2012, 2013 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2010, 2011, 2012, 2013, 2014 Jose Antonio Ortega Ruiz
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the Modified BSD License. You should
@@ -71,7 +71,7 @@
                      (let* ([proc (eval-here (read))]
                             [args (map eval-here (read))]
                             [ev (lambda () (apply proc args))])
-                       (eval-in `(,ev) mod lang))]
+                       (eval-in `(,ev) mod lang #t))]
                     [else ((geiser:eval lang) form mod)])])
     (datum->syntax #f (list 'quote res))))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]