2 USING: compiler compiler.units tools.test math parser kernel
3 sequences sequences.private classes.mixin generic definitions
6 GENERIC: method-redefine-test ( a -- b )
8 M: integer method-redefine-test 3 + ;
10 : method-redefine-test-1 ( -- b ) 3 method-redefine-test ;
12 [ 6 ] [ method-redefine-test-1 ] unit-test
14 [ ] [ "IN: compiler.tests USE: math M: fixnum method-redefine-test 4 + ;" eval ] unit-test
16 [ 7 ] [ method-redefine-test-1 ] unit-test
18 [ ] [ [ fixnum \ method-redefine-test method forget ] with-compilation-unit ] unit-test
20 [ 6 ] [ method-redefine-test-1 ] unit-test
22 ! Test ripple-up behavior
26 [ t ] [ \ hey compiled? ] unit-test
27 [ t ] [ \ there compiled? ] unit-test
28 [ ] [ "IN: compiler.tests : hey ( -- ) 3 ;" eval ] unit-test
29 [ f ] [ \ hey compiled? ] unit-test
30 [ f ] [ \ there compiled? ] unit-test
31 [ ] [ "IN: compiler.tests : hey ( -- ) ;" eval ] unit-test
32 [ t ] [ \ there compiled? ] unit-test
34 ! Just changing the stack effect didn't mark a word for recompilation
37 [ ] [ "IN: compiler.tests GENERIC: change-effect ( a -- b )" eval ] unit-test
38 { 1 1 } [ change-effect ] must-infer-as
40 [ ] [ "IN: compiler.tests GENERIC: change-effect ( a -- )" eval ] unit-test
41 { 1 0 } [ change-effect ] must-infer-as
47 [ t ] [ \ good compiled? ] unit-test
48 [ t ] [ \ bad compiled? ] unit-test
49 [ t ] [ \ ugly compiled? ] unit-test
51 [ f ] [ \ good compiled-usage assoc-empty? ] unit-test
53 [ ] [ "IN: compiler.tests : good ( -- ) 3 ;" eval ] unit-test
55 [ f ] [ \ good compiled? ] unit-test
56 [ f ] [ \ bad compiled? ] unit-test
57 [ f ] [ \ ugly compiled? ] unit-test
59 [ t ] [ \ good compiled-usage assoc-empty? ] unit-test
61 [ ] [ "IN: compiler.tests : good ( -- ) ;" eval ] unit-test
63 [ t ] [ \ good compiled? ] unit-test
64 [ t ] [ \ bad compiled? ] unit-test
65 [ t ] [ \ ugly compiled? ] unit-test
67 [ f ] [ \ good compiled-usage assoc-empty? ] unit-test