diff --git a/basis/locals/parser/parser.factor b/basis/locals/parser/parser.factor index ea1a07478f..e59b6a8fc5 100644 --- a/basis/locals/parser/parser.factor +++ b/basis/locals/parser/parser.factor @@ -11,8 +11,13 @@ SYMBOL: in-lambda? : ?rewrite-closures ( form -- form' ) in-lambda? get [ 1array ] [ rewrite-closures ] if ; +ERROR: invalid-local-name name ; + +: check-local-name ( name -- name ) + dup { "]" "]!" } member? [ invalid-local-name ] when ; + : make-local ( name -- word ) - "!" ?tail [ + check-local-name "!" ?tail [ dup dup name>> ,, ] [ ] if