[ { "e" } ] [ (( ..a b c -- ..d e )) out>> ] unit-test
[ "(( a ..b c -- d ))" eval( -- effect ) ]
-[ error>> invalid-effect-variable? ] must-fail-with
+[ error>> invalid-row-variable? ] must-fail-with
[ "(( ..a: integer b c -- d ))" eval( -- effect ) ]
-[ error>> effect-variable-can't-have-type? ] must-fail-with
+[ error>> row-variable-can't-have-type? ] must-fail-with
DEFER: parse-effect
ERROR: bad-effect ;
-ERROR: invalid-effect-variable ;
-ERROR: effect-variable-can't-have-type ;
+ERROR: invalid-row-variable ;
+ERROR: row-variable-can't-have-type ;
ERROR: stack-effect-omits-dashes ;
SYMBOL: effect-var
: end-token? ( end token -- token ? ) [ nip ] [ = ] 2bi ; inline
: effect-opener? ( token -- token ? ) dup { f "(" "((" "--" } member? ; inline
: effect-closer? ( token -- token ? ) dup { ")" "))" } member? ; inline
-: effect-variable? ( token -- token' ? ) ".." ?head ; inline
+: row-variable? ( token -- token' ? ) ".." ?head ; inline
: parse-effect-var ( first? var name -- var )
nip
- [ ":" ?tail [ effect-variable-can't-have-type ] when ] curry
- [ invalid-effect-variable ] if ;
+ [ ":" ?tail [ row-variable-can't-have-type ] when ] curry
+ [ invalid-row-variable ] if ;
: parse-effect-value ( token -- value )
":" ?tail [
{ [ end-token? ] [ drop nip f ] }
{ [ effect-opener? ] [ bad-effect ] }
{ [ effect-closer? ] [ stack-effect-omits-dashes ] }
- { [ effect-variable? ] [ parse-effect-var t ] }
+ { [ row-variable? ] [ parse-effect-var t ] }
[ [ drop ] 2dip parse-effect-value , t ]
} cond ;