]> gitweb.factorcode.org Git - factor.git/blob - unfinished/compiler/cfg/builder/builder-tests.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / unfinished / compiler / cfg / builder / builder-tests.factor
1 IN: compiler.cfg.builder.tests
2 USING: compiler.cfg.builder tools.test kernel sequences
3 math.private compiler.tree.builder compiler.tree.optimizer
4 words sequences.private fry prettyprint alien ;
5
6 ! Just ensure that various CFGs build correctly.
7 : test-cfg ( quot -- result )
8     build-tree optimize-tree gensym gensym build-cfg ;
9
10 {
11     [ ]
12     [ dup ]
13     [ swap ]
14     [ >r r> ]
15     [ fixnum+ ]
16     [ fixnum< ]
17     [ [ 1 ] [ 2 ] if ]
18     [ fixnum< [ 1 ] [ 2 ] if ]
19     [ float+ [ 2.0 float* ] [ 3.0 float* ] bi float/f ]
20     [ { [ 1 ] [ 2 ] [ 3 ] } dispatch ]
21     [ [ t ] loop ]
22     [ [ dup ] loop ]
23     [ [ 2 ] [ 3 throw ] if 4 ]
24     [ "int" f "malloc" { "int" } alien-invoke ]
25     [ "int" { "int" } "cdecl" alien-indirect ]
26     [ "int" { "int" } "cdecl" [ ] alien-callback ]
27 } [
28     '[ _ test-cfg drop ] [ ] swap unit-test
29 ] each
30
31 : test-word-cfg ( word -- result )
32     [ build-tree-from-word nip optimize-tree ] keep dup
33     build-cfg ;
34
35 : test-1 ( -- ) test-1 ;
36 : test-2 ( -- ) 3 . test-2 ;
37 : test-3 ( a -- b ) dup [ test-3 ] when ;
38
39 {
40     test-1
41     test-2
42     test-3
43 } [
44     '[ _ test-word-cfg drop ] [ ] swap unit-test
45 ] each