[OCaml] Fix the handling of bools in overloaded functions

Use the SWIG_TYPECHECK_BOOL precedence level instead of
SWIG_TYPECHECK_INTEGER when checking for bools.

Add a runtime test in the form of overload_bool_runme.ml.
This commit is contained in:
Zackery Spytz 2019-01-18 23:42:59 -07:00
commit b879ccdc3e
2 changed files with 16 additions and 1 deletions

View file

@ -0,0 +1,15 @@
open Swig
open Overload_bool
let _ =
assert (_overloaded '(true) as string = "bool");
assert (_overloaded '(false) as string = "bool");
assert (_overloaded '(0) as string = "int");
assert (_overloaded '(1) as string = "int");
assert (_overloaded '(2) as string = "int");
assert (_overloaded '("1234") as string = "string");
assert (_boolfunction '(true) as string = "true");
assert (_boolfunction '(false) as string = "false");
assert (_intfunction '(true) as string = "int");
assert (_intfunction '(false) as string = "int");
;;

View file

@ -78,7 +78,7 @@
}
}
%typecheck(SWIG_TYPECHECK_INTEGER) bool, oc_bool, BOOL, const bool &, const oc_bool &, const BOOL & {
%typecheck(SWIG_TYPECHECK_BOOL) bool, oc_bool, const bool &, const oc_bool & {
if( !Is_block($input) ) $1 = 0;
else {
switch( SWIG_Tag_val($input) ) {