2007-09-20 18:09:08 -04:00
|
|
|
USING: compiler definitions generic assocs inference math
|
|
|
|
namespaces parser tools.test words kernel sequences arrays io
|
2008-01-24 02:20:05 -05:00
|
|
|
effects tools.test.inference compiler.units inference.state ;
|
2007-09-20 18:09:08 -04:00
|
|
|
IN: temporary
|
|
|
|
|
2008-01-01 14:54:14 -05:00
|
|
|
DEFER: x-1
|
|
|
|
DEFER: x-2
|
|
|
|
|
|
|
|
[ [ f ] { } map>assoc modify-code-heap ] recompile-hook [
|
|
|
|
"IN: temporary USE: math GENERIC: x-1 ( x -- y ) M: integer x-1 ;" eval
|
|
|
|
"IN: temporary : x-2 3 x-1 ;" eval
|
|
|
|
|
|
|
|
[ t ] [
|
|
|
|
{ x-2 } compile
|
|
|
|
|
|
|
|
\ x-2 word-xt
|
|
|
|
|
|
|
|
{ x-1 } compile
|
|
|
|
|
2008-01-17 16:36:25 -05:00
|
|
|
\ x-2 word-xt =
|
2008-01-01 14:54:14 -05:00
|
|
|
] unit-test
|
|
|
|
] with-variable
|
|
|
|
|
2007-12-24 21:41:46 -05:00
|
|
|
DEFER: b
|
|
|
|
DEFER: c
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : a 1 2 ; : b a a ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 1 2 1 2 ] [ "USE: temporary b" eval ] unit-test
|
|
|
|
|
|
|
|
{ 0 4 } [ b ] unit-test-effect
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : a 1 2 3 ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 1 2 3 1 2 3 ] [ "USE: temporary b" eval ] unit-test
|
|
|
|
|
|
|
|
{ 0 6 } [ b ] unit-test-effect
|
|
|
|
|
|
|
|
\ b word-xt "b-xt" set
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : c b ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ t ] [ "b-xt" get \ b word-xt = ] unit-test
|
|
|
|
|
|
|
|
\ c word-xt "c-xt" set
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : a 1 2 4 ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ t ] [ "c-xt" get \ c word-xt = ] unit-test
|
|
|
|
|
|
|
|
[ 1 2 4 1 2 4 ] [ "USE: temporary c" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : a 1 2 ;" eval ] unit-test
|
|
|
|
|
|
|
|
{ 0 4 } [ c ] unit-test-effect
|
|
|
|
|
|
|
|
[ f ] [ "c-xt" get \ c word-xt = ] unit-test
|
|
|
|
|
|
|
|
[ 1 2 1 2 ] [ "USE: temporary c" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : d 3 ; inline" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : e d d ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 3 3 ] [ "USE: temporary e" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : d 4 ; inline" eval ] unit-test
|
|
|
|
|
|
|
|
[ 4 4 ] [ "USE: temporary e" eval ] unit-test
|
2008-01-01 14:54:14 -05:00
|
|
|
|
|
|
|
DEFER: x-3
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : x-3 3 ;" eval ] unit-test
|
|
|
|
|
|
|
|
DEFER: x-4
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : x-4 x-3 ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ t ] [ \ x-4 compiled? ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USE: sequences : x-3 { } [ ] each ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ f ] [ \ x-3 compiled? ] unit-test
|
|
|
|
|
|
|
|
[ f ] [ \ x-4 compiled? ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USING: kernel sequences ; : x-3 { } [ drop ] each ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ t ] [ \ x-3 compiled? ] unit-test
|
|
|
|
|
|
|
|
[ t ] [ \ x-4 compiled? ] unit-test
|
|
|
|
|
|
|
|
[ t ] [ \ x-3 "compiled-uses" word-prop >boolean ] unit-test
|
|
|
|
|
2008-01-12 04:25:16 -05:00
|
|
|
[ t ] [ \ x-3 "compiled-uses" word-prop [ drop interned? ] assoc-all? ] unit-test
|
2008-01-01 14:54:14 -05:00
|
|
|
|
|
|
|
DEFER: g-test-1
|
|
|
|
|
|
|
|
DEFER: g-test-3
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USE: math GENERIC: g-test-1 ( x -- y ) M: integer g-test-1 sq ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : g-test-2 ( -- y ) 3 g-test-1 ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : g-test-3 ( -- y ) g-test-2 ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 25 ] [ 5 g-test-1 ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USE: math GENERIC: g-test-1 ( x -- y ) M: integer g-test-1 ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 5 ] [ 5 g-test-1 ] unit-test
|
|
|
|
|
|
|
|
[ t ] [
|
|
|
|
\ g-test-3 word-xt
|
|
|
|
|
|
|
|
"IN: temporary USE: math GENERIC: g-test-1 ( x -- y ) M: integer g-test-1 3 + ;" eval
|
|
|
|
|
2008-01-17 17:02:26 -05:00
|
|
|
\ g-test-3 word-xt =
|
2008-01-01 14:54:14 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
DEFER: g-test-5
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : g-test-4 ( -- y ) 3 g-test-1 ; inline" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : g-test-5 ( -- y ) g-test-4 ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 6 ] [ g-test-5 ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USE: math GENERIC: g-test-1 ( x -- y ) M: integer g-test-1 10 + ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 13 ] [ g-test-5 ] unit-test
|
|
|
|
|
|
|
|
DEFER: g-test-6
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USING: arrays kernel ; GENERIC: g-test-6 ( x -- y ) M: array g-test-6 drop 123 g-test-1 ;" eval ] unit-test
|
|
|
|
|
|
|
|
DEFER: g-test-7
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : g-test-7 { } g-test-6 ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 133 ] [ g-test-7 ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USE: math GENERIC: g-test-1 ( x -- y ) M: integer g-test-1 15 + ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 138 ] [ g-test-7 ] unit-test
|
2008-01-02 22:08:28 -05:00
|
|
|
|
|
|
|
USE: macros
|
|
|
|
|
|
|
|
DEFER: macro-test-3
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USING: macros math ; : macro-test-1 sq ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USING: macros arrays quotations ; MACRO: macro-test-2 ( n word -- quot ) <array> >quotation ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : macro-test-3 2 \\ macro-test-1 macro-test-2 ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 625 ] [ 5 macro-test-3 ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USING: macros arrays quotations kernel math ; MACRO: macro-test-2 ( n word -- quot ) 2drop [ 3 + ] ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 8 ] [ 5 macro-test-3 ] unit-test
|
|
|
|
|
|
|
|
USE: hints
|
|
|
|
|
|
|
|
DEFER: hints-test-2
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USING: math hints ; : hints-test-1 3 + ; HINTS: hints-test-1 fixnum ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : hints-test-2 5 hints-test-1 ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 8 ] [ hints-test-2 ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USE: math : hints-test-1 5 + ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 10 ] [ hints-test-2 ] unit-test
|
2008-01-09 19:13:26 -05:00
|
|
|
|
2008-01-11 03:32:25 -05:00
|
|
|
DEFER: inline-then-not-inline-test-1
|
2008-01-09 19:13:26 -05:00
|
|
|
DEFER: inline-then-not-inline-test-2
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : inline-then-not-inline-test-1 1 2 3 ; inline" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : inline-then-not-inline-test-2 inline-then-not-inline-test-1 ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 1 2 3 ] [ inline-then-not-inline-test-2 ] unit-test
|
|
|
|
|
2008-01-11 03:32:25 -05:00
|
|
|
\ inline-then-not-inline-test-2 word-xt "a" set
|
2008-01-09 19:13:26 -05:00
|
|
|
|
2008-01-11 03:32:25 -05:00
|
|
|
[ ] [ "IN: temporary : inline-then-not-inline-test-1 6 6 9 ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ f ] [ \ inline-then-not-inline-test-2 word-xt "a" get = ] unit-test
|
|
|
|
|
|
|
|
[ 6 6 9 ] [ inline-then-not-inline-test-2 ] unit-test
|
2008-01-12 04:25:16 -05:00
|
|
|
|
|
|
|
DEFER: generic-then-not-generic-test-1
|
|
|
|
DEFER: generic-then-not-generic-test-2
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary GENERIC: generic-then-not-generic-test-1 ( a -- b )" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USE: math M: integer generic-then-not-generic-test-1 sq ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : generic-then-not-generic-test-2 3 generic-then-not-generic-test-1 ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 9 ] [ generic-then-not-generic-test-2 ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USE: math : generic-then-not-generic-test-1 1 + ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ 4 ] [ generic-then-not-generic-test-2 ] unit-test
|
2008-01-21 17:30:10 -05:00
|
|
|
|
2008-01-24 02:20:05 -05:00
|
|
|
DEFER: foldable-test-1
|
2008-01-21 17:30:10 -05:00
|
|
|
DEFER: foldable-test-2
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : foldable-test-1 3 ; foldable" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : foldable-test-2 foldable-test-1 ;" eval ] unit-test
|
|
|
|
|
2008-01-24 02:20:05 -05:00
|
|
|
[ +inlined+ ] [ \ foldable-test-2 \ foldable-test-1 compiled-usage at ] unit-test
|
|
|
|
|
2008-01-21 17:30:10 -05:00
|
|
|
[ 3 ] [ foldable-test-2 ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : foldable-test-1 4 ; foldable" eval ] unit-test
|
|
|
|
|
|
|
|
[ 4 ] [ foldable-test-2 ] unit-test
|
|
|
|
|
|
|
|
DEFER: flushable-test-2
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USE: kernel : flushable-test-1 drop 3 ; flushable" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USE: kernel : flushable-test-2 V{ } dup flushable-test-1 drop ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ V{ } ] [ flushable-test-2 ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary USING: kernel sequences ; : flushable-test-1 3 over push ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ V{ 3 } ] [ flushable-test-2 ] unit-test
|
2008-01-24 02:20:05 -05:00
|
|
|
|
|
|
|
: ax ;
|
|
|
|
: bx ax ;
|
|
|
|
[ \ bx forget ] with-compilation-unit
|
|
|
|
|
|
|
|
[ t ] [ \ ax compiled-usage [ drop interned? ] assoc-all? ] unit-test
|
2008-01-28 20:09:49 -05:00
|
|
|
|
2008-01-29 14:12:04 -05:00
|
|
|
DEFER: defer-redefine-test-2
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary DEFER: defer-redefine-test-1" eval ] unit-test
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : defer-redefine-test-2 defer-redefine-test-1 1 ;" eval ] unit-test
|
|
|
|
|
|
|
|
[ defer-redefine-test-2 ] unit-test-fails
|
|
|
|
|
|
|
|
[ ] [ "IN: temporary : defer-redefine-test-1 2 ;" eval ] unit-test
|
|
|
|
|
2008-02-01 00:00:08 -05:00
|
|
|
[ 2 1 ] [ defer-redefine-test-2 ] unit-test
|