Merge branch 'ZackerySpytz-OCaml-dead-code-overloaded-funcs'
* ZackerySpytz-OCaml-dead-code-overloaded-funcs: [OCaml] Fix dead code generation in overloaded function wrappers
This commit is contained in:
commit
65cab79071
4 changed files with 26 additions and 11 deletions
11
Examples/test-suite/ocaml/overload_extend_runme.ml
Normal file
11
Examples/test-suite/ocaml/overload_extend_runme.ml
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
open Swig
|
||||||
|
open Overload_extend
|
||||||
|
|
||||||
|
let _ =
|
||||||
|
let f = new_Foo '() in
|
||||||
|
assert (f -> test () as int = 0);
|
||||||
|
assert (f -> test (3) as int = 1);
|
||||||
|
assert (f -> test ("hello") as int = 2);
|
||||||
|
assert (f -> test (3., 2.) as float = 5.);
|
||||||
|
assert (f -> test (3.) as float = 1003.)
|
||||||
|
;;
|
||||||
7
Examples/test-suite/ocaml/overload_rename_runme.ml
Normal file
7
Examples/test-suite/ocaml/overload_rename_runme.ml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
open Swig
|
||||||
|
open Overload_rename
|
||||||
|
|
||||||
|
let _ = new_Foo (C_float 1.)
|
||||||
|
let _ = new_Foo (C_list [ C_float 1. ; C_float 1. ])
|
||||||
|
let _ = new_Foo_int (C_list [ C_float 1. ; C_int 1 ])
|
||||||
|
let _ = new_Foo_int (C_list [ C_float 1. ; C_int 1 ; C_float 1. ])
|
||||||
8
Examples/test-suite/ocaml/overload_subtype_runme.ml
Normal file
8
Examples/test-suite/ocaml/overload_subtype_runme.ml
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
open Swig
|
||||||
|
open Overload_subtype
|
||||||
|
|
||||||
|
let _ =
|
||||||
|
let f = new_Foo '() and b = new_Bar '() in
|
||||||
|
assert (_spam (f) as int = 1);
|
||||||
|
assert (_spam (b) as int = 2)
|
||||||
|
;;
|
||||||
|
|
@ -524,15 +524,6 @@ public:
|
||||||
// adds local variables
|
// adds local variables
|
||||||
Wrapper_add_local(f, "args", "CAMLparam1(args)");
|
Wrapper_add_local(f, "args", "CAMLparam1(args)");
|
||||||
Wrapper_add_local(f, "ret", "SWIG_CAMLlocal2(swig_result,rv)");
|
Wrapper_add_local(f, "ret", "SWIG_CAMLlocal2(swig_result,rv)");
|
||||||
if (isOverloaded) {
|
|
||||||
Wrapper_add_local(f, "i", "int i");
|
|
||||||
Wrapper_add_local(f, "argc", "int argc = caml_list_length(args)");
|
|
||||||
Wrapper_add_local(f, "argv", "CAML_VALUE *argv");
|
|
||||||
|
|
||||||
Printv(f->code,
|
|
||||||
"argv = (CAML_VALUE *)malloc( argc * sizeof( CAML_VALUE ) );\n"
|
|
||||||
"for( i = 0; i < argc; i++ ) {\n" " argv[i] = caml_list_nth(args,i);\n" "}\n", NIL);
|
|
||||||
}
|
|
||||||
d = SwigType_typedef_qualified(d);
|
d = SwigType_typedef_qualified(d);
|
||||||
emit_parameter_variables(l, f);
|
emit_parameter_variables(l, f);
|
||||||
|
|
||||||
|
|
@ -701,8 +692,6 @@ public:
|
||||||
// Wrap things up (in a manner of speaking)
|
// Wrap things up (in a manner of speaking)
|
||||||
|
|
||||||
Printv(f->code, tab4, "swig_result = caml_list_append(swig_result,rv);\n", NIL);
|
Printv(f->code, tab4, "swig_result = caml_list_append(swig_result,rv);\n", NIL);
|
||||||
if (isOverloaded)
|
|
||||||
Printv(f->code, "free(argv);\n", NIL);
|
|
||||||
Printv(f->code, tab4, "CAMLreturn(swig_result);\n", NIL);
|
Printv(f->code, tab4, "CAMLreturn(swig_result);\n", NIL);
|
||||||
Printv(f->code, "}\n", NIL);
|
Printv(f->code, "}\n", NIL);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue