diff --git a/core/parser/parser.factor b/core/parser/parser.factor index 1bda0e48f7..20c1dd5fdb 100644 --- a/core/parser/parser.factor +++ b/core/parser/parser.factor @@ -222,12 +222,17 @@ print-use-hook [ [ ] ] initialize : parse-file-restarts ( path -- restarts ) "Load " " again" surround t 2array 1array ; -: parse-file ( path -- quot ) +: (parse-file) ( path -- quot ) [ - [ parsing-file ] keep - [ utf8 ] keep - parse-stream - ] [ + dup [ + utf8 file-lines dup parse-fresh + [ nip ] [ finish-parsing ] 2bi + forget-smudged + ] with-source-file + ] with-compilation-unit ; + +: parse-file ( path -- quot ) + [ (parse-file) ] [ over parse-file-restarts rethrow-restarts drop parse-file ] recover ;