classes.union: Disallow unions to refer to themselves. Fixes #420 lol. Thanks @mrjbq7 for the patch.
parent
a55a367bf3
commit
980d5f44b2
|
@ -132,3 +132,7 @@ PREDICATE: numba-ova-10 < union{ float integer }
|
||||||
[ t ] [ 100.0 numba-ova-10? ] unit-test
|
[ t ] [ 100.0 numba-ova-10? ] unit-test
|
||||||
[ f ] [ 5 numba-ova-10? ] unit-test
|
[ f ] [ 5 numba-ova-10? ] unit-test
|
||||||
[ f ] [ 5.75 numba-ova-10? ] unit-test
|
[ f ] [ 5.75 numba-ova-10? ] unit-test
|
||||||
|
|
||||||
|
! Issue #420 lol
|
||||||
|
[ "IN: issue-420 UNION: omg omg ;" eval( -- ) ]
|
||||||
|
[ error>> cannot-reference-self? ] must-fail-with
|
||||||
|
|
|
@ -53,10 +53,15 @@ M: union-class update-class define-union-predicate ;
|
||||||
: (define-union-class) ( class members -- )
|
: (define-union-class) ( class members -- )
|
||||||
f swap f union-class make-class-props (define-class) ;
|
f swap f union-class make-class-props (define-class) ;
|
||||||
|
|
||||||
|
ERROR: cannot-reference-self class members ;
|
||||||
|
|
||||||
|
: check-self-reference ( class members -- class members )
|
||||||
|
2dup member-eq? [ cannot-reference-self ] when ;
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: define-union-class ( class members -- )
|
: define-union-class ( class members -- )
|
||||||
[ (define-union-class) ]
|
[ check-self-reference (define-union-class) ]
|
||||||
[ drop changed-conditionally ]
|
[ drop changed-conditionally ]
|
||||||
[ drop update-classes ]
|
[ drop update-classes ]
|
||||||
2tri ;
|
2tri ;
|
||||||
|
|
Loading…
Reference in New Issue