consume whitespace before reading a term in loader.pl, modify prolog_load_context at file key to better reflect loading context, use it when reporting singleton variables (#812)

This commit is contained in:
Mark Thom
2021-02-22 13:23:22 -07:00
parent 5f8bdc564b
commit 1a9f6f06df
6 changed files with 62 additions and 70 deletions

View File

@@ -130,28 +130,26 @@ filter_anonymous_vars([VN=V | VNEqs0], VNEqs) :-
warn_about_singletons([], _).
warn_about_singletons([Singleton|Singletons], LinesRead) :-
( LinesRead =:= -1 ->
true
; filter_anonymous_vars([Singleton|Singletons], VarEqs),
( filter_anonymous_vars([Singleton|Singletons], VarEqs),
VarEqs \== [] ->
write('Warning: singleton variables '),
print_comma_separated_list(VarEqs),
write(' at line '),
write(LinesRead),
write(' of '),
load_context(Module),
write(Module),
prolog_load_context(file, File),
write(File),
nl
; true
).
load_loop(Stream, Evacuable) :-
( stream_property(Stream, position(position_and_lines_read(_, LinesRead))) ->
true
; LinesRead = -1
( '$devour_whitespace'(Stream) ->
stream_property(Stream, position(position_and_lines_read(_, LinesRead))),
read_term(Stream, Term, [singletons(Singletons)])
; Term = end_of_file
),
read_term(Stream, Term, [singletons(Singletons)]),
( Term == end_of_file ->
close(Stream),
'$conclude_load'(Evacuable)