-! (c)2009 Joe Groff bsd license
+! Copyright (C) 2009 Joe Groff.
+! See https://factorcode.org/license.txt for BSD license.
USING: accessors arrays classes classes.mixin classes.parser
classes.singleton classes.tuple classes.tuple.parser
classes.union combinators inverse kernel lexer macros make
PREDICATE: variant-class < mixin-class "variant?" word-prop ;
M: variant-class initial-value*
- members [ f f ] [
+ class-members [ f f ] [
first dup word? [ t ] [ initial-value* ] if
] if-empty ;
SYNTAX: VARIANT-MEMBER:
scan-word
scan-token parse-variant-member
- define-variant-class-member ;
+ define-variant-class-member ";" expect ;
MACRO: unboa ( class -- quot )
<wrapper> \ boa [ ] 2sequence [undo] ;
-GENERIC# (match-branch) 1 ( class quot -- class quot' )
+GENERIC#: (match-branch) 1 ( class quot -- class quot' )
M: singleton-class (match-branch)
\ drop prefix ;