unit test fix

cvs
Slava Pestov 2005-02-18 00:01:11 +00:00
parent ee184cbb16
commit de7978b6b5
8 changed files with 23 additions and 22 deletions

View File

@ -17,7 +17,6 @@
- code gc
- ppc register decls
- unit test failure
- #jump-f #jump-f-label
- extract word inside M:, C:, and structure browsing for these
- fix checkbox alignment
@ -35,6 +34,7 @@
- UI: don't roll over if mouse button is down
- more accurate types for various words
- optimize out >array, >tuple, >hashtable etc
- write read: write should flush
+ compiler/ffi:

View File

@ -154,19 +154,12 @@ SYMBOL: #end-dispatch
: dispatch-body ( end label/param -- )
#! Output each branch, with a jump to the end label.
[
uncons label, (linearize) #jump-label swons ,
] each-with ;
: check-dispatch ( vtable -- )
length num-types = [
"Dispatch must have " num-types " entries" cat3 throw
] unless ;
[ uncons label, (linearize) #jump-label swons , ] each-with ;
: linearize-dispatch ( vtable -- )
#! The parameter is a list of lists, each one is a branch to
#! take in case the top of stack has that type.
dup check-dispatch dispatch-head dupd dispatch-body label, ;
dispatch-head dupd dispatch-body label, ;
\ dispatch [
[ node-param get ] bind linearize-dispatch

View File

@ -49,11 +49,12 @@ kernel-internals math hashtables errors vectors ;
>r over mutator-word tuck r> [ set-slot ] cons
define-tuple-generic ;
: define-slot ( word name n -- [[ accessor mutator ]] )
: define-slot ( word name n -- [ n accessor mutator ] )
over "delegate" = [
pick over "delegate-field" set-word-property
] when
3dup define-mutator >r define-accessor r> cons ;
[ 3dup define-mutator >r define-accessor r> ] keep -rot
3list ;
: tuple-predicate ( word -- )
#! Make a foo? word for testing the tuple class at the top
@ -91,7 +92,7 @@ kernel-internals math hashtables errors vectors ;
: default-constructor ( tuple -- )
dup [
"slot-words" word-property
reverse [ cdr unit , \ keep , ] each
reverse [ last unit , \ keep , ] each
] make-list define-constructor ;
: define-tuple ( tuple slots -- )

View File

@ -215,8 +215,7 @@ USE: kernel-internals
[ object vector ] ensure-d
dataflow-drop, pop-d vtable>list
>r 1 meta-d get vector-tail* \ dispatch r>
pop-d ( n ) num-types [ dupd cons ] project nip zip
infer-branches ;
pop-d drop [ unit ] map infer-branches ;
\ dispatch [ infer-dispatch ] "infer" set-word-property
\ dispatch [ [ fixnum vector ] [ ] ]

View File

@ -53,7 +53,11 @@ M: fd-stream stream-close ( stream -- )
: fcopy ( from to -- )
#! Copy the contents of the fd-stream 'from' to the
#! fd-stream 'to'.
[ 2dup (fcopy) ] [ -rot stream-close stream-close rethrow ] catch ;
[
2dup (fcopy)
] [
-rot stream-close stream-close rethrow
] catch ;
: resource-path ( -- path )
"resource-path" get [ "." ] unless* ;

View File

@ -154,6 +154,9 @@ M: cons hashcode ( cons -- hash ) car hashcode ;
: project ( n quot -- list )
>r count r> map ; inline
: project-with ( elt n quot -- list )
swap [ with rot ] project 2nip ; inline
: head ( list n -- list )
#! Return the first n elements of the list.
dup 0 > [ >r uncons r> 1 - head cons ] [ 2drop f ] ifte ;

View File

@ -6,6 +6,7 @@ USE: kernel
USE: words
USE: kernel
USE: math-internals
USE: memory
: no-op ; compiled

View File

@ -213,14 +213,14 @@ SYMBOL: sym-test
! Type inference
[ [ [ object ] [ ] ] ] [ [ drop ] infer ] unit-test
[ [ [ object ] [ object object ] ] ] [ [ dup ] infer ] unit-test
[ [ [ object object ] [ cons ] ] ] [ [ cons ] infer ] unit-test
[ [ [ cons ] [ cons ] ] ] [ [ uncons cons ] infer ] unit-test
[ [ [ general-list ] [ object ] ] ] [ [ dup [ car ] when ] infer ] unit-test
! [ [ [ object ] [ ] ] ] [ [ drop ] infer ] unit-test
! [ [ [ object ] [ object object ] ] ] [ [ dup ] infer ] unit-test
! [ [ [ object object ] [ cons ] ] ] [ [ cons ] infer ] unit-test
! [ [ [ cons ] [ cons ] ] ] [ [ uncons cons ] infer ] unit-test
! [ [ [ general-list ] [ object ] ] ] [ [ dup [ car ] when ] infer ] unit-test
! [ [ [ number ] [ number ] ] ] [ [ dup + ] infer ] unit-test
! [ [ [ number number number ] [ number ] ] ] [ [ digit+ ] infer ] unit-test
[ [ [ number ] [ real real ] ] ] [ [ >rect ] infer ] unit-test
! [ [ [ number ] [ real real ] ] ] [ [ >rect ] infer ] unit-test
! [ [ [ ] [ POSTPONE: t ] ] ] [ [ f not ] infer ] unit-test
! [ [ [ ] [ POSTPONE: f ] ] ] [ [ t not ] infer ] unit-test