value-info >literal< ;
: possible-boolean-values ( info -- values )
- dup literal?>> [
- literal>> 1array
- ] [
- class>> {
- { [ dup null-class? ] [ { } ] }
- { [ dup true-class? ] [ { t } ] }
- { [ dup false-class? ] [ { f } ] }
- [ { t f } ]
- } cond nip
- ] if ;
+ class>> {
+ { [ dup null-class? ] [ { } ] }
+ { [ dup true-class? ] [ { t } ] }
+ { [ dup false-class? ] [ { f } ] }
+ [ { t f } ]
+ } cond nip ;
: node-value-info ( node value -- info )
swap info>> at* [ drop null-info ] unless ;
[ t ] [ [ { float float } declare max ] { max } inlined? ] unit-test
[ f ] [ [ { float float } declare max ] { float-max } inlined? ] unit-test
+
+! Propagation should not call equal?, hashcode, etc on literals in user code
+[ V{ } ] [ [ 4 <reversed> [ 2drop ] with each ] final-info ] unit-test
+
+! Reduction
+[ 1 ] [ [ 4 <reversed> [ nth-unsafe ] [ ] unless ] final-info length ] unit-test