From 4e8c515d36390019ccb0bd218598080aaeef0cf9 Mon Sep 17 00:00:00 2001 From: Joseph C Wang Date: Sun, 26 Nov 2017 03:43:39 +0800 Subject: [PATCH] add new tests and coercion files for null fix #1124 --- Examples/test-suite/r/Makefile.in | 3 ++- Lib/r/rtype.swg | 17 ++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Examples/test-suite/r/Makefile.in b/Examples/test-suite/r/Makefile.in index 38cd78e06..13fd3654b 100644 --- a/Examples/test-suite/r/Makefile.in +++ b/Examples/test-suite/r/Makefile.in @@ -20,7 +20,8 @@ CPP_TEST_CASES += \ r_double_delete \ r_overload_array \ r_sexp \ - r_overload_comma + r_overload_comma \ + r_use_isnull # These tests are failing because enums currently cannot handle # arithmetic expressions diff --git a/Lib/r/rtype.swg b/Lib/r/rtype.swg index 22639f2d0..c55c70377 100644 --- a/Lib/r/rtype.swg +++ b/Lib/r/rtype.swg @@ -152,19 +152,26 @@ string &, std::string & %typemap(scoerceout) SEXP %{ %} %typemap(scoerceout) SWIGTYPE - %{ $result <- new("$&R_class", ref=$result); %} + %{ $result <- if (is.null($result)) $result + else new("$&R_class", ref=$result); %} %typemap(scoerceout) SWIGTYPE & - %{ $result <- new("$R_class", ref=$result) ; %} + %{ $result <- if (is.null($result)) $result + else new("$R_class", ref=$result); %} + %typemap(scoerceout) SWIGTYPE && - %{ $result <- new("$R_class", ref=$result) ; %} + %{ $result <- if (is.null($result)) $result + else new("$R_class", ref=$result); %} %typemap(scoerceout) SWIGTYPE * - %{ $result <- new("$R_class", ref=$result) ; %} + %{ $result <- if (is.null($result)) $result + else new("$R_class", ref=$result); %} + %typemap(scoerceout) SWIGTYPE *const - %{ $result <- new("$R_class", ref=$result) ; %} + %{ $result <- if (is.null($result)) $result + else new("$R_class", ref=$result); %} /* Override the SWIGTYPE * above. */