~ chicken-core (chicken-5) 61e95fb01611cc54dd88760bad24757bbfbea4c5


commit 61e95fb01611cc54dd88760bad24757bbfbea4c5
Author:     LemonBoy <thatlemon@gmail.com>
AuthorDate: Wed Nov 8 09:48:52 2017 +0100
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Thu Nov 9 09:01:27 2017 +1300

    Streamline the behaviour of set-procedure-data!
    
    Make it return a ##core#undefined value like the other set! procedures.
    The entry in types.db already has the correct return type.
    
    Signed-off-by: felix <felix@call-with-current-continuation.org>
    Signed-off-by: Evan Hanson <evhan@foldling.org>

diff --git a/lolevel.scm b/lolevel.scm
index d1483496..c91a6510 100644
--- a/lolevel.scm
+++ b/lolevel.scm
@@ -461,15 +461,10 @@ EOF
        (and-let* ([d (%procedure-data x)])
 	 (##sys#slot d 1) ) ) )
 
-(define set-procedure-data!
-  (lambda (proc x)
-    (let ((p2 (extend-procedure proc x)))
-      (if (eq? p2 proc)
-	  proc
-	  (##sys#signal-hook
-	   #:type-error 'set-procedure-data!
-	   "bad argument type - not an extended procedure" proc) ) ) ) )
-
+(define (set-procedure-data! proc x)
+  (unless (eq? proc (extend-procedure proc x))
+    (##sys#signal-hook #:type-error 'set-procedure-data!
+     "bad argument type - not an extended procedure" proc)))
 
 ;;; Accessors for arbitrary vector-like block objects:
 
diff --git a/tests/lolevel-tests.scm b/tests/lolevel-tests.scm
index bb6c2990..332102a2 100644
--- a/tests/lolevel-tests.scm
+++ b/tests/lolevel-tests.scm
@@ -225,7 +225,7 @@
 
 (define unique-proc-data-2 '(23 'skidoo))
 
-(assert (eq? foo (set-procedure-data! foo unique-proc-data-2)))
+(set-procedure-data! foo unique-proc-data-2)
 
 (assert (eq? unique-proc-data-2 (procedure-data foo)))
 
Trap