diff --git a/basis/compiler/tree/propagation/known-words/known-words.factor b/basis/compiler/tree/propagation/known-words/known-words.factor index 63d2df543d..621b8d082b 100644 --- a/basis/compiler/tree/propagation/known-words/known-words.factor +++ b/basis/compiler/tree/propagation/known-words/known-words.factor @@ -81,7 +81,10 @@ IN: compiler.tree.propagation.known-words class>> dup null-class? [ drop null ] [ math-closure ] if ; : unary-op-interval ( info quot -- newinterval ) - [ interval>> ] dip call ; inline + [ + dup class>> real classes-intersect? + [ interval>> ] [ drop full-interval ] if + ] dip call ; inline : unary-op ( word interval-quot post-proc-quot -- ) '[ diff --git a/basis/compiler/tree/propagation/propagation-tests.factor b/basis/compiler/tree/propagation/propagation-tests.factor index ec5fbd95cd..0c220542ca 100644 --- a/basis/compiler/tree/propagation/propagation-tests.factor +++ b/basis/compiler/tree/propagation/propagation-tests.factor @@ -186,6 +186,10 @@ IN: compiler.tree.propagation.tests [ t ] [ [ { complex } declare absq ] final-info first interval>> [0,inf] = ] unit-test +[ t ] [ [ { float float } declare rect> C{ 0.0 0.0 } + absq ] final-info first interval>> [0,inf] = ] unit-test + +[ V{ float } ] [ [ { float float } declare rect> C{ 0.0 0.0 } + absq ] final-classes ] unit-test + [ t ] [ [ [ - absq ] [ + ] 2map-reduce ] final-info first interval>> [0,inf] = ] unit-test [ t ] [ [ { double-array double-array } declare [ - absq ] [ + ] 2map-reduce ] final-info first interval>> [0,inf] = ] unit-test