aboutsummaryrefslogtreecommitdiff
path: root/Lib/perl5
diff options
context:
space:
mode:
authorWilliam S Fulton <wsf@fultondesigns.co.uk>2017-11-17 08:00:46 +0000
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2017-11-29 20:31:55 +0000
commit923091da13dcc572b5acf4d167d57c7e8fbf550f (patch)
tree33fb780c3b3faeef850392f26210053ac58398a3 /Lib/perl5
parent077bb0b04fdb644af65dc83973137cf5dbbb9d5a (diff)
downloadswig-923091da13dcc572b5acf4d167d57c7e8fbf550f.tar.gz
Changes to use common DirectorException class
Add director.swg for Go as was completely absent. This is just the start of a common exception handling approach to directors. An exception thrown in a Java director method will be propogated back to Java via a C++ DirectorException. DirectorException throws typemap for Java is fully working, all other languages need work. DirectorException throws typemap for Perl added just to fix compilation errors. Add director_exception_catches test.
Diffstat (limited to 'Lib/perl5')
-rw-r--r--Lib/perl5/perltypemaps.swg4
1 files changed, 4 insertions, 0 deletions
diff --git a/Lib/perl5/perltypemaps.swg b/Lib/perl5/perltypemaps.swg
index ffec5eaf1..a86d3ad54 100644
--- a/Lib/perl5/perltypemaps.swg
+++ b/Lib/perl5/perltypemaps.swg
@@ -71,6 +71,10 @@
/* raise exception */
%define %raise(obj, type, desc) sv_setsv(get_sv("@", GV_ADD), obj); SWIG_fail %enddef
+/* For directors to raise/throw the original exception */
+%typemap(throws) Swig::DirectorException
+%{ sv_setsv(ERRSV, $1.getNative()); SWIG_fail; %}
+
/* Include the unified typemap library */
%include <typemaps/swigtypemaps.swg>