[OCaml] Some exception improvements
The OCaml module's exception handling code was poorly designed, gave confusing exception messages, and was vulnerable to buffer overflows. The OCaml module's SWIG_exception_() was adding a useless newline to the end of the exception message. In some cases, the integer value of f.e. SWIG_TypeError was being added to the exception message. The unneeded else in the OCaml module's SWIG_contract_assert() macro was causing -Wmisleading-indentation warnings. The OCaml module's exception handling code now mirrors that of the Java module. Add Lib/ocaml/std_except.i. Add multiple runtime tests.
This commit is contained in:
parent
df86ec5af6
commit
e5b8b5a164
12 changed files with 264 additions and 41 deletions
17
Examples/test-suite/ocaml/exception_order_runme.ml
Normal file
17
Examples/test-suite/ocaml/exception_order_runme.ml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
open Swig
|
||||
open Exception_order
|
||||
|
||||
let a = new_A '()
|
||||
|
||||
let check meth args expected =
|
||||
try
|
||||
ignore ((invoke a) meth (C_list [ args ])); assert false
|
||||
with Failure msg -> assert (msg = expected)
|
||||
|
||||
let _ =
|
||||
check "foo" '() "C++ E1 exception thrown";
|
||||
check "bar" '() "C++ E2 exception thrown";
|
||||
check "foobar" '() "postcatch unknown";
|
||||
check "barfoo" (C_int 1) "C++ E1 exception thrown";
|
||||
check "barfoo" (C_int 2) "C++ E2 * exception thrown";
|
||||
;;
|
||||
Loading…
Add table
Add a link
Reference in a new issue