~ chicken-core (chicken-5) b3aff204780a190ebb296736579444581c17529d


commit b3aff204780a190ebb296736579444581c17529d
Author:     Evan Hanson <evhan@foldling.org>
AuthorDate: Tue Feb 9 12:19:16 2016 +1300
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Tue Mar 8 22:52:35 2016 +1300

    Give load-library and load-extension a void result
    
    Also, use the normal, non-##sys# load-extension in require-for-syntax
    and standardize the names of the auxiliary load-library/extension
    procedures to (hopefully) make their roles slightly more clear.

diff --git a/core.scm b/core.scm
index 8898b16f..9c424a89 100644
--- a/core.scm
+++ b/core.scm
@@ -672,7 +672,7 @@
 			   ,(walk (caddr x) e se dest ldest h ln)))
 
 			((##core#require-for-syntax)
-			 (##sys#load-extension (cadr x))
+			 (load-extension (cadr x))
 			 '(##core#undefined))
 
 			((##core#require)
diff --git a/eval.scm b/eval.scm
index 5b447b78..b3522fd9 100644
--- a/eval.scm
+++ b/eval.scm
@@ -703,8 +703,8 @@
 			  (compile `(##sys#provide (##core#quote ,(cadr x))) e #f tf cntr se)]
 
 			 [(##core#require-for-syntax)
-			  (let ((id (strip-syntax (cadr x))))
-			    (##sys#load-extension id)
+			  (let ((id (cadr x)))
+			    (load-extension id)
 			    (compile
 			     `(##core#begin
 			       ,@(map (lambda (x)
@@ -1097,34 +1097,36 @@
        (##sys#check-list x)
        x) ) ) )
 
-(define load-library-0
+(define load-library/internal
   (let ((display display))
-    (lambda (uname lib)
+    (lambda (uname lib loc)
       (let ((libs
 	     (if lib
 		 (##sys#list lib)
 		 (cons (##sys#string-append (##sys#slot uname 1) load-library-extension)
 		       (dynamic-load-libraries))))
 	    (top
-	     (c-toplevel uname 'load-library)))
+	     (c-toplevel uname loc)))
 	(when (load-verbose)
 	  (display "; loading library ")
 	  (display uname)
 	  (display " ...\n") )
 	(let loop ((libs libs))
-	  (cond ((null? libs) #f)
-		((##sys#dload (##sys#make-c-string (##sys#slot libs 0) 'load-library) top) #t)
-		(else (loop (##sys#slot libs 1)))))))))
-
-(define load-library
-  (lambda (uname #!optional lib)
-    (##sys#check-symbol uname 'load-library)
-    (unless (not lib) (##sys#check-string lib 'load-library))
-    (or (##sys#provided? uname)
-	(load-library-0 uname lib)
-	(##sys#error 'load-library "unable to load library" uname _dlerror) ) ) )
-
-(define ##sys#load-library load-library)
+	  (cond ((null? libs)
+		 (##sys#error loc "unable to load library" uname _dlerror))
+		((##sys#dload (##sys#make-c-string (##sys#slot libs 0) 'load-library) top))
+		(else
+		 (loop (##sys#slot libs 1)))))))))
+
+(define (##sys#load-library uname #!optional lib loc)
+  (unless (##sys#provided? uname)
+    (load-library/internal uname lib loc)
+    (##core#undefined)))
+
+(define (load-library uname #!optional lib)
+  (##sys#check-symbol uname 'load-library)
+  (unless (not lib) (##sys#check-string lib 'load-library))
+  (##sys#load-library uname lib 'load-library))
 
 (define ##sys#include-forms-from-file
   (let ((with-input-from-file with-input-from-file)
@@ -1215,12 +1217,11 @@
 		 (or (check pa)
 		     (loop (##sys#slot paths 1)) ) ) ) ) ) ) ))
 
-(define (##sys#load-extension id #!optional (alternates '()) loc)
+(define (load-extension/internal id alternates loc)
   (cond ((##sys#provided? id))
 	((any ##sys#provided? alternates))
 	((memq id core-units)
-	 (or (load-library-0 id #f)
-	     (##sys#error loc "cannot load core library" id)))
+         (load-library/internal id #f loc))
 	((##sys#find-extension id #f) =>
 	 (lambda (ext)
 	   (load/internal ext #f #f #f #f id)
@@ -1228,6 +1229,10 @@
 	(else
 	 (##sys#error loc "cannot load extension" id))))
 
+(define (##sys#load-extension id #!optional (alternates '()) loc)
+  (load-extension/internal id alternates loc)
+  (##core#undefined))
+
 (define (load-extension id)
   (##sys#check-symbol id 'load-extension)
   (##sys#load-extension id '() 'load-extension))
diff --git a/types.db b/types.db
index 2ecacece..ccda394a 100644
--- a/types.db
+++ b/types.db
@@ -844,7 +844,7 @@
 (chicken.eval#eval (procedure chicken.eval#eval (* #!optional (struct environment)) . *))
 (chicken.eval#extension-information (#(procedure #:clean) chicken.eval#extension-information (symbol) *))
 (chicken.eval#load (procedure chicken.eval#load (string #!optional (procedure (*) . *)) undefined))
-(chicken.eval#load-extension (#(procedure #:enforce) chicken.eval#load-extension (symbol) boolean))
+(chicken.eval#load-extension (#(procedure #:enforce) chicken.eval#load-extension (symbol) undefined))
 (chicken.eval#load-library (#(procedure #:enforce) chicken.eval#load-library (symbol #!optional string) undefined))
 (chicken.eval#load-relative (#(procedure #:enforce) chicken.eval#load-relative (string #!optional (procedure (*) . *)) undefined))
 (chicken.eval#load-verbose (#(procedure #:clean) chicken.eval#load-verbose (#!optional *) *))
Trap