[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