classes.maybe: Change the type of maybe's class slot. As a result, maybe: maybe: integer is valid now, so fix the unit tests and its prettyprinting.
parent
0700dca792
commit
64bbd248d5
|
@ -449,3 +449,9 @@ TUPLE: fo { a intersection{ fixnum integer } initial: 0 } ;
|
||||||
] [
|
] [
|
||||||
[ maybe: union{ float integer } . ] with-string-writer
|
[ maybe: union{ float integer } . ] with-string-writer
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
|
[
|
||||||
|
"""maybe: maybe: integer\n"""
|
||||||
|
] [
|
||||||
|
[ maybe: maybe: integer . ] with-string-writer
|
||||||
|
] unit-test
|
||||||
|
|
|
@ -28,7 +28,9 @@ PREDICATE: natural < maybe: integer
|
||||||
[ f ] [ 0 natural? ] unit-test
|
[ f ] [ 0 natural? ] unit-test
|
||||||
[ t ] [ 1 natural? ] unit-test
|
[ t ] [ 1 natural? ] unit-test
|
||||||
|
|
||||||
[ "USE: math maybe: maybe: integer" eval( -- obj ) ] [ error>> bad-slot-value? ] must-fail-with
|
[ t ] [ f maybe: maybe: integer instance? ] unit-test
|
||||||
|
[ t ] [ 3 maybe: maybe: integer instance? ] unit-test
|
||||||
|
[ f ] [ 3.03 maybe: maybe: integer instance? ] unit-test
|
||||||
|
|
||||||
INTERSECTION: only-f maybe: integer POSTPONE: f ;
|
INTERSECTION: only-f maybe: integer POSTPONE: f ;
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,12 @@ classes.algebra.private classes.private classes.union.private
|
||||||
effects kernel words ;
|
effects kernel words ;
|
||||||
IN: classes.maybe
|
IN: classes.maybe
|
||||||
|
|
||||||
TUPLE: maybe { class classoid initial: object read-only } ;
|
! The class slot has to be a union of a word and a classoid
|
||||||
|
! for TUPLE: foo { a maybe: foo } ; and maybe: union{ integer float } to work.
|
||||||
|
! In the first case, foo is not yet a tuple-class when maybe: is reached,
|
||||||
|
! thus it's not a classoid yet. union{ is a classoid, so the second case works.
|
||||||
|
! words are not generally classoids, so classoid alone is insufficient.
|
||||||
|
TUPLE: maybe { class union{ word classoid } initial: object read-only } ;
|
||||||
|
|
||||||
C: <maybe> maybe
|
C: <maybe> maybe
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue