diff --git a/core/classes/algebra/algebra-tests.factor b/core/classes/algebra/algebra-tests.factor index 78da6ee9b3..444cf50e58 100755 --- a/core/classes/algebra/algebra-tests.factor +++ b/core/classes/algebra/algebra-tests.factor @@ -3,7 +3,7 @@ kernel math namespaces parser prettyprint sequences strings tools.test vectors words quotations classes classes.algebra classes.private classes.union classes.mixin classes.predicate vectors definitions source-files compiler.units growable -random inference effects kernel.private sbufs math.order +random inference effects kernel.private sbufs math.order classes.tuple ; IN: classes.algebra.tests @@ -288,6 +288,8 @@ INTERSECTION: generic-class generic class ; generic-class flatten-class ] unit-test +[ \ + flatten-class ] must-fail + INTERSECTION: empty-intersection ; [ t ] [ object empty-intersection class<= ] unit-test diff --git a/core/classes/algebra/algebra.factor b/core/classes/algebra/algebra.factor index 9dbe72d9cb..1076901678 100755 --- a/core/classes/algebra/algebra.factor +++ b/core/classes/algebra/algebra.factor @@ -207,9 +207,6 @@ GENERIC: (flatten-class) ( class -- ) M: anonymous-union (flatten-class) members>> [ (flatten-class) ] each ; -M: word (flatten-class) - normalize-class (flatten-class) ; - : flatten-class ( class -- assoc ) [ (flatten-class) ] H{ } make-assoc ; diff --git a/core/classes/intersection/intersection.factor b/core/classes/intersection/intersection.factor index 5df580d82f..bb7e0adc62 100644 --- a/core/classes/intersection/intersection.factor +++ b/core/classes/intersection/intersection.factor @@ -31,3 +31,6 @@ M: intersection-class rank-class drop 2 ; M: intersection-class instance? "participants" word-prop [ instance? ] with all? ; + +M: intersection-class (flatten-class) + participants (flatten-class) ; diff --git a/core/classes/union/union.factor b/core/classes/union/union.factor index e3deb25e7a..fbb1925363 100755 --- a/core/classes/union/union.factor +++ b/core/classes/union/union.factor @@ -32,3 +32,6 @@ M: union-class rank-class drop 2 ; M: union-class instance? "members" word-prop [ instance? ] with contains? ; + +M: union-class (flatten-class) + members (flatten-class) ;