[PPL-devel] [GIT] ppl/ppl(master): Allow for Prolog exception errors to have message functor ppl_length_error .
Patricia Hill
p.m.hill at leeds.ac.uk
Wed Apr 18 16:38:57 CEST 2012
Module: ppl/ppl
Branch: master
Commit: eb9d162975ce37469fa28fa69c07a29ca76ca6f9
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=eb9d162975ce37469fa28fa69c07a29ca76ca6f9
Author: Patricia Hill <p.m.hill at leeds.ac.uk>
Date: Wed Apr 18 15:35:12 2012 +0100
Allow for Prolog exception errors to have message functor ppl_length_error.
---
interfaces/Prolog/tests/pl_check.pl | 85 ++++++++++++++++++++---------------
1 files changed, 48 insertions(+), 37 deletions(-)
diff --git a/interfaces/Prolog/tests/pl_check.pl b/interfaces/Prolog/tests/pl_check.pl
index 4c327a8..4235caa 100644
--- a/interfaces/Prolog/tests/pl_check.pl
+++ b/interfaces/Prolog/tests/pl_check.pl
@@ -3017,46 +3017,52 @@ exception_cplusplus(10, [A, B, C]) :-
% If expected exception is caught, it succeeds and fails if not.
must_catch(Call, prolog_exception_error) :-
- !,
- catch( Call, Message, format_exception_message( Message ) ),
- ( \+var(Message) ->
- ((Message =.. [ppl_invalid_argument|_] ; Message = out_of_memory) ->
- true
- ;
- check_exception_term(Message)
- )
- ;
- fail
- ).
+ !,
+ catch( Call, Message, format_exception_message( Message ) ),
+ ( \+var(Message) ->
+ ((
+ Message =.. [ppl_invalid_argument|_]
+ ;
+ Message =.. [ppl_length_error|_]
+ ;
+ Message = out_of_memory
+ ) ->
+ true
+ ;
+ check_exception_term(Message)
+ )
+ ;
+ fail
+ ).
must_catch(Call, cpp_error) :-
- !,
- catch( Call, Message, format_exception_message( cpp_error(Message) ) ),
- ( ( \+ var(Message),
- functor(Message, ppl_invalid_argument, _) ) ->
- true
- ;
- fail
- ).
+ !,
+ catch( Call, Message, format_exception_message( cpp_error(Message) ) ),
+ ( ( \+ var(Message),
+ functor(Message, ppl_invalid_argument, _) ) ->
+ true
+ ;
+ fail
+ ).
must_catch(Call, ppl_sys_prolog_error) :-
- !,
- catch( Call, Message, format_exception_message(Message) ),
- ( ( \+ var(Message),
- (Message =.. [ppl_representation_error|_] )) ->
- true
- ;
- fail
- ).
+ !,
+ catch( Call, Message, format_exception_message(Message) ),
+ ( ( \+ var(Message),
+ (Message =.. [ppl_representation_error|_] )) ->
+ true
+ ;
+ fail
+ ).
must_catch(Call, Expected) :-
- catch(Call, Message, format_exception_message(Message) ),
- (\+ var(Message), Message = ppl_overflow_error(_) ->
- true
- ;
- ( \+ var(Message), Message =.. [Expected|_] ->
- true
- ;
- fail
- )
- ).
+ catch(Call, Message, format_exception_message(Message) ),
+ (\+ var(Message), Message = ppl_overflow_error(_) ->
+ true
+ ;
+ ( \+ var(Message), Message =.. [Expected|_] ->
+ true
+ ;
+ fail
+ )
+ ).
%%%%%%%%%%%% predicate for making list of ppl variables %%%%%%
@@ -3324,6 +3330,11 @@ format_exception_message(
F, 'is an invalid argument for', W, nl, ' ',
F, 'should be', E, '.']).
+format_exception_message(ppl_length_error(Error)) :-
+ !,
+ display_message(['PPL Prolog Interface Exception: ', nl, ' ',
+ 'ppl_length_error', Error]).
+
format_exception_message(
ppl_representation_error(I, where(W))
) :-
More information about the PPL-devel
mailing list