flush loader term queue before compiling declarations, declare '/1' as dynamic before asserting

This commit is contained in:
Mark Thom
2021-03-22 16:53:23 -06:00
parent 0cb731c584
commit fffb87d013
3 changed files with 39 additions and 14 deletions

View File

@@ -839,9 +839,9 @@ asserta_clause(Head, Body) :-
arg(2, Head, F),
module_asserta_clause(F, Body, Module)
; '$head_is_dynamic'(user, Head) ->
call_asserta(Head, Body, Name, Arity, user)
call_asserta(Head, Body, Name, Arity, user)
; '$no_such_predicate'(user, Head) ->
call_asserta(Head, Body, Name, Arity, user)
call_asserta(Head, Body, Name, Arity, user)
; throw(error(permission_error(modify, static_procedure, Name/Arity), asserta/1))
)
; throw(error(type_error(callable, Head), asserta/1))