: parse-file-restarts ( path -- restarts )
"Load " " again" surround t 2array 1array ;
-: parse-file ( path -- quot )
+: (parse-file) ( path -- quot )
[
- [ parsing-file ] keep
- [ utf8 <file-reader> ] 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 ;