From c2597023149353cf67797fbb55ba75b861eca85f Mon Sep 17 00:00:00 2001 From: Thomas Reitmayr Date: Sun, 14 Jun 2020 14:46:03 +0200 Subject: [PATCH 1/2] Perform proper spacing in director method declarations If a director method returns a const pointer, eg. 'int *const', then in its method declaration a space has to be inserted between 'const' and the method name. This fixes swig#1810. --- Examples/test-suite/director_basic.i | 17 +++++++++++++++-- Examples/test-suite/javascript/Makefile.in | 1 + Source/Modules/directors.cxx | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Examples/test-suite/director_basic.i b/Examples/test-suite/director_basic.i index 07d627589..23d910324 100644 --- a/Examples/test-suite/director_basic.i +++ b/Examples/test-suite/director_basic.i @@ -5,6 +5,7 @@ #endif %warnfilter(SWIGWARN_TYPEMAP_THREAD_UNSAFE,SWIGWARN_TYPEMAP_DIRECTOROUT_PTR) MyClass::pmethod; +%warnfilter(SWIGWARN_TYPEMAP_DIRECTOROUT_PTR) ConstPtrClass::getConstPtr; %{ #include @@ -174,7 +175,19 @@ public: } }; - -%} + %} %template(MyClassT_i) MyClassT; + + %feature("director") ConstPtrClass; + + %inline %{ + +class ConstPtrClass { +public: + virtual ~ConstPtrClass() {} + virtual int *const getConstPtr() = 0; +}; + + %} + diff --git a/Examples/test-suite/javascript/Makefile.in b/Examples/test-suite/javascript/Makefile.in index 8127415f1..4dc02e3bf 100644 --- a/Examples/test-suite/javascript/Makefile.in +++ b/Examples/test-suite/javascript/Makefile.in @@ -52,6 +52,7 @@ ifeq (node,$(JSENGINE)) apply_signed_char.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" constant_pointers.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" enum_thorough.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" + director_basic.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" setup_node = \ test -d $* || mkdir $* && \ diff --git a/Source/Modules/directors.cxx b/Source/Modules/directors.cxx index a91d5fd9a..056842cb6 100644 --- a/Source/Modules/directors.cxx +++ b/Source/Modules/directors.cxx @@ -160,7 +160,7 @@ String *Swig_method_decl(SwigType *return_base_type, SwigType *decl, const_Strin SwigType *rettype_stripped = SwigType_strip_qualifiers(rettype); String *rtype = SwigType_str(rettype, 0); Append(result, rtype); - if (SwigType_issimple(rettype_stripped) && return_base_type) + if ((SwigType_issimple(rettype_stripped) && return_base_type) || SwigType_isqualifier(rettype)) Append(result, " "); Delete(rtype); Delete(rettype_stripped); From 339377410b4e1b474eb505a6d68dedde26e1eae4 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Wed, 7 Oct 2020 22:21:37 +0100 Subject: [PATCH 2/2] Put test in alphabetical order --- Examples/test-suite/javascript/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/test-suite/javascript/Makefile.in b/Examples/test-suite/javascript/Makefile.in index 4dc02e3bf..4fab31206 100644 --- a/Examples/test-suite/javascript/Makefile.in +++ b/Examples/test-suite/javascript/Makefile.in @@ -51,8 +51,8 @@ ifeq (node,$(JSENGINE)) # dunno... ignoring generously apply_signed_char.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" constant_pointers.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" - enum_thorough.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" director_basic.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" + enum_thorough.cpptest: GYP_CFLAGS = \"-Wno-ignored-qualifiers\" setup_node = \ test -d $* || mkdir $* && \