~ chicken-core (chicken-5) 24a2feefaa0a3d807b952fe9441bf1efaf948843
commit 24a2feefaa0a3d807b952fe9441bf1efaf948843 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Wed Mar 23 05:38:02 2011 -0400 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Wed Mar 23 05:38:02 2011 -0400 small rules.make refactoring and test target; types.db fixes diff --git a/defaults.make b/defaults.make index 64d91044..b19cca82 100644 --- a/defaults.make +++ b/defaults.make @@ -303,7 +303,6 @@ CHICKEN_STATUS_PROGRAM = $(PROGRAM_PREFIX)chicken-status$(PROGRAM_SUFFIX) CHICKEN_BUG_PROGRAM = $(PROGRAM_PREFIX)chicken-bug$(PROGRAM_SUFFIX) IMPORT_LIBRARIES = chicken lolevel srfi-1 srfi-4 data-structures ports files posix srfi-13 srfi-69 extras srfi-14 tcp foreign scheme srfi-18 utils csi irregex IMPORT_LIBRARIES += setup-api setup-download -SCRUTINIZED_LIBRARIES = library eval data-structures ports files extras lolevel utils tcp srfi-1 srfi-4 srfi-13 srfi-14 srfi-18 srfi-69 $(POSIXFILE) irregex scheduler profiler stub expand chicken-syntax chicken-ffi-syntax ifdef STATICBUILD CHICKEN_STATIC_EXECUTABLE = $(CHICKEN_PROGRAM)$(EXE) diff --git a/rules.make b/rules.make index 521a8010..69d14967 100644 --- a/rules.make +++ b/rules.make @@ -35,10 +35,11 @@ VPATH=$(SRCDIR) SETUP_API_OBJECTS_1 = setup-api setup-download -LIBCHICKEN_OBJECTS_1 = \ +LIBCHICKEN_SCHEME_OBJECTS_1 = \ library eval data-structures ports files extras lolevel utils tcp srfi-1 srfi-4 srfi-13 \ srfi-14 srfi-18 srfi-69 $(POSIXFILE) irregex scheduler \ - profiler stub expand chicken-syntax chicken-ffi-syntax runtime + profiler stub expand chicken-syntax chicken-ffi-syntax +LIBCHICKEN_OBJECTS_1 = $(LIBCHICKEN_SCHEME_OBJECTS_1) runtime LIBCHICKEN_SHARED_OBJECTS = $(LIBCHICKEN_OBJECTS_1:=$(O)) LIBCHICKEN_STATIC_OBJECTS = $(LIBCHICKEN_OBJECTS_1:=-static$(O)) @@ -589,8 +590,9 @@ clean: $(CHICKEN_STATUS_PROGRAM)$(EXE) \ $(CHICKEN_BUG_PROGRAM)$(EXE) *$(O) \ $(LIBCHICKEN_SO_FILE) \ + $(PRIMARY_LIBCHICKEN) \ lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(A) \ - lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(SO) $(PROGRAM_IMPORT_LIBRARIES) \ + $(PROGRAM_IMPORT_LIBRARIES) \ $(IMPORT_LIBRARIES:=.import.so) $(LIBCHICKEN_IMPORT_LIBRARY) \ $(SETUP_API_OBJECTS_1:=.so) $(SETUP_API_OBJECTS_1:=.import.so) ifdef USES_SONAME @@ -659,3 +661,17 @@ ifdef WINDOWS_SHELL else touch *.scm endif + + +# compile all core modules (for testing) + +.PHONY: compile-all + +COMPILE_ALL_FILES = $(LIBCHICKEN_SCHEME_OBJECTS_1) $(COMPILER_OBJECTS_1) + +# use EXTRA_CHICKEN_OPTIONS to test particular compiler options: +compile-all: + @for x in $(COMPILE_ALL_FILES:=.scm); do \ + echo "$(CHICKEN) $$x $(CHICKEN_LIBRARY_OPTIONS)"; \ + $(CHICKEN) $$x $(CHICKEN_LIBRARY_OPTIONS) -output-file out.c || exit 1; \ + done diff --git a/scrutinizer.scm b/scrutinizer.scm index ef712215..5daffaef 100755 --- a/scrutinizer.scm +++ b/scrutinizer.scm @@ -37,7 +37,7 @@ (when (##sys#fudge 13) (printf "[debug] ~?~%" fstr args)) ) -(define-syntax d (syntax-rules () ((_ . _) (void)))) +;(define-syntax d (syntax-rules () ((_ . _) (void)))) ;;; Walk node tree, keeping type and binding information diff --git a/types.db b/types.db index bfb3439a..d3efdee8 100644 --- a/types.db +++ b/types.db @@ -55,7 +55,7 @@ (pair? (procedure pair? (*) boolean) ((pair) (let ((#:tmp #(1))) '#t)) - (((not pair)) (let ((#:tmp #(1))) '#f))) + (((not (or pair list))) (let ((#:tmp #(1))) '#f))) (cons (procedure cons (* *) pair)) @@ -94,8 +94,13 @@ (set-car! (procedure set-car! (pair *) undefined) ((pair *) (##sys#setslot #(1) '0 #(2)))) (set-cdr! (procedure set-cdr! (pair *) undefined) ((pair *) (##sys#setslot #(1) '1 #(2)))) -(null? (procedure null? (*) boolean) ((null) (let ((#:tmp #(1))) '#t)) ((not null) (let ((#:tmp #(1))) '#f))) -(list? (procedure list? (*) boolean) (((or null pair list)) (let ((#:tmp #(1))) '#t)) (((not (or null pair list))) (let ((#:tmp #(1))) '#f))) +(null? (procedure null? (*) boolean) + ((null) (let ((#:tmp #(1))) '#t)) ((not null) (let ((#:tmp #(1))) '#f))) + +(list? (procedure list? (*) boolean) + (((or null pair list)) (let ((#:tmp #(1))) '#t)) + (((not (or null pair list))) (let ((#:tmp #(1))) '#f))) + (list (procedure list (#!rest) list)) (length (procedure length (list) fixnum) ((list) (##core#inline "C_u_i_length" #(1)))) (list-tail (procedure list-tail (list fixnum) *)) @@ -843,7 +848,7 @@ (atom? (procedure atom? (*) boolean) ((pair) (let ((#:tmp #(1))) '#f)) - (((not pair)) (let ((#:tmp #(1))) '#t))) + (((not (or pair list))) (let ((#:tmp #(1))) '#t))) (binary-search (procedure binary-search (vector (procedure (*) *)) *)) (butlast (procedure butlast (pair) list)) @@ -1477,7 +1482,7 @@ (not-pair? (procedure not-pair? (*) boolean) ((pair) (let ((#:tmp #(1))) '#f)) - (((not pair)) (let ((#:tmp #(1))) '#t))) + (((not (or pair list))) (let ((#:tmp #(1))) '#t))) (null-list? (procedure null-list? (list) boolean) ((pair) (let ((#:tmp #(1))) '#f))Trap