Repository: RosettaCommons/binder (language: python)

Issue:
test cases outdated
Hi @lyskov,
first of all: thanks a lot for this tool!

I just realised that many of the test case references seem to be out of date.
CTest does not report any discrepancies, but only because `--always-success` is being passed to `diffbinder`.  
This flag has been introduced in 902f6e7bec36ac4a5bae810d150c470626ea4b5e.
I think the flag needs to be removed and test cases updated. Do you agree?

P.S.: For most of the test cases, the differences can be resolved easily by removing some semi-colons - they are related to #152.
For some other test cases, however, like T42, the changes are more extensive. 


Discussion / hints:
Hi @ThFe ,

Updating the reference results is a good idea, as for me. But unfortunately the produced bindings are slightly different for different llvm versions, so the flag will be needed at least for some of them.
Of course one could redefine the compatibility range of the llvm versions, but I don't know which version of llvm is used by @lyskov now.

Best regards,

Andrii
Thank you @ThFe , - glad you like it!

As @andriish pointed out the test output is different for different platform so we have to disable comparison steps for most of them. Our reference platform is CentOS-7 with default Clang install.

@andriish related, could you please remind me: we do have CentOS-7 tests now run without `--always-success` right? Or did we have to disable it? Thanks,
Hi @ThFe , @lyskov ,

The reference files came from @lyskov , from LLVM-6@CentOS7 installation. And for that configuration, there was no need for that flag. However, as far as I understand that LLVM-6@CentOS7 was compiled from sources. Means it was not possible to reproduce that configuration it in a fast CI -> github CI runs only on Fedora and MacOS, platforms where one can easily get  binary LLVM packages within minutes.

Now, back to the differences. Because the produced bindings depend not only on the LLVM version, but also on the used standard headers, the `--always-success`  was required in CI even for versions of LLVM which were close to LLVM-6.

Best regards,

Andrii

P.S. Actually, if the standard version of LLVM for Rosetta now LLVM7@CentOS7, one could easily add CentOS7 to CI and there should be no need for the flag at least for one CI config. 




Hi @andriish, @lyskov,

thanks a lot! I see the problem.
Having a reference platform (maybe also via a docker file?) on which the tests can be run successfully (i.e., without `--always-success`) would help a lot.

[The reason I asked this is related to an issue I faced with forward declared inner classes. I wanted to try to resolve it, but without breaking any functionality]

Best regards,
Thomas
Hi @ThFe ,

>Having a reference platform

@lyskov has a reference platform -- CentOS7. But according to my understanding for that reference platform @lyskov builds binder as a part of LLVM. So the "docker file" for the reference platform would be just "FROM centos:7" and then one has to start the build process according to https://cppbinder.readthedocs.io/en/latest/install.html .  Of course the compilation will take some CPU hours and the results (i.e. binder + libraries ) will be large, but for a large codebase like Rosetta it is not important at all.  For sure the process is not very convenient for smaller projects and I was patient enough to do that from scratch only twice or so, but well, that makes sense for the authors of OSS to write codes that solve their tasks best.

>I wanted to try to resolve it, but without breaking any functionality

OK. I see. Is there a LLVM version that works? If so, some small differences between the bindings generated with different LLVM versions e.g. in CI can be useful here. LLVM has only 6-8 months between the releases and binder uses only a fraction of LLVM functionality, so it is not too hard to spot the difference in the LLVM code between working and non-working versions.  Also, some differences are created just because of reordering of #include statements in the standard headers and can be safely ignored.


Best regards,

Andrii
Hi @andriish,

thanks for your reply. I was almost expecting that binder is built as a part of LLVM in the reference system (I have read the docs, of course). You are certainly right - for smaller projects, this would be too much.

Regarding the forward declared inner class issue: I do not know whether there is an LLVM version that works (it does not for v11).
I´ll create a separate issue for that one.

Best regards,
Thomas

Fix patch:
diff --git a/.github/workflows/fedora34/Dockerfile b/.github/workflows/fedora34/Dockerfile
new file mode 100644
index 00000000..1a0b6137
--- /dev/null
+++ b/.github/workflows/fedora34/Dockerfile
@@ -0,0 +1,8 @@
+# Container image that runs your code
+FROM fedora:34
+
+#Copies your code file from your action repository to the filesystem path `/` of the container
+COPY entrypoint.sh /entrypoint.sh
+
+#Code file to execute when the docker container starts up (`entrypoint.sh`)
+ENTRYPOINT ["/entrypoint.sh"]
diff --git a/.github/workflows/fedora34/action.yaml b/.github/workflows/fedora34/action.yaml
new file mode 100644
index 00000000..8644a211
--- /dev/null
+++ b/.github/workflows/fedora34/action.yaml
@@ -0,0 +1,15 @@
+name: 'Compile binder'
+description: 'Binder'
+inputs:
+  theextraargument:   # an optional extra argument for docker run.
+    description: 'Extra docker argument'
+    required: true
+    default: 'World'
+outputs:
+  thestatus: # here we put the execution status 
+    description: 'The execution status'
+runs:
+  using: 'docker'
+  image: 'Dockerfile'
+  args:
+    - ${{ inputs.theextraargument }}
diff --git a/.github/workflows/fedora34/entrypoint.sh b/.github/workflows/fedora34/entrypoint.sh
new file mode 100755
index 00000000..b57ada36
--- /dev/null
+++ b/.github/workflows/fedora34/entrypoint.sh
@@ -0,0 +1,16 @@
+#!/bin/sh -l
+set -x
+uname -a 
+cat /etc/issue
+yum -y install --nogpgcheck git  zlib zlib-devel ncurses-devel  clang clang-devel clang-libs  llvm llvm-devel llvm-static
+yum -y install --nogpgcheck libcxx-devel cmake make gcc gcc-c++
+yum -y install --nogpgcheck pybind11-devel python3 python3-devel python2 python2-devel 
+
+cmake CMakeLists.txt
+make
+ldd source/binder
+ldd -u -r source/binder
+ctest . --output-on-failure 
+out=$?
+cat Testing/Temporary/LastTest.log
+echo ::set-output name=out::$out
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 90803214..64cfe886 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -106,6 +106,19 @@ jobs:
       uses: ./.github/workflows/fedora33
     - name: Get the output status
       run: exit ${{ steps.compileindocker.outputs.out }}
+
+  compilejobFedora34:
+    runs-on: ubuntu-latest
+    name: Binder_on_Fedora34
+    steps:
+    - name: Checkout
+      uses: actions/checkout@v2
+    - name: Compile
+      id: compileindocker
+      uses: ./.github/workflows/fedora34
+    - name: Get the output status
+      run: exit ${{ steps.compileindocker.outputs.out }}
+
   
   compilejobOSX:
     runs-on: macos-latest
diff --git a/.github/workflows/osx/entrypoint.sh b/.github/workflows/osx/entrypoint.sh
index 6de6f1e5..f32cd528 100755
--- a/.github/workflows/osx/entrypoint.sh
+++ b/.github/workflows/osx/entrypoint.sh
@@ -10,3 +10,4 @@ cmake CMakeLists.txt
 make
 otool -L source/binder
 ctest . --output-on-failure 
+cat Testing/Temporary/LastTest.log


Test patch:
diff --git a/test/T00.basic.ref b/test/T00.basic.ref
index a983dd19..56711522 100644
--- a/test/T00.basic.ref
+++ b/test/T00.basic.ref
@@ -12,9 +12,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T00_basic(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T01.enum.ref b/test/T01.enum.ref
index 0f68d6f9..508069ed 100644
--- a/test/T01.enum.ref
+++ b/test/T01.enum.ref
@@ -11,9 +11,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T01_enum(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T02.function.ref b/test/T02.function.ref
index acba02c4..953f66ab 100644
--- a/test/T02.function.ref
+++ b/test/T02.function.ref
@@ -19,9 +19,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T02_function(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T05.default.ref b/test/T05.default.ref
index 89f5dfc2..ab211707 100644
--- a/test/T05.default.ref
+++ b/test/T05.default.ref
@@ -10,9 +10,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T05_default(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T07.class.ref b/test/T07.class.ref
index 262d45a7..0206cdb3 100644
--- a/test/T07.class.ref
+++ b/test/T07.class.ref
@@ -14,9 +14,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T07_class(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T08.constructor.ref b/test/T08.constructor.ref
index 1dd86195..62890d9b 100644
--- a/test/T08.constructor.ref
+++ b/test/T08.constructor.ref
@@ -15,9 +15,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T08_constructor(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T09.overload.ref b/test/T09.overload.ref
index 7f327c79..915a0f65 100644
--- a/test/T09.overload.ref
+++ b/test/T09.overload.ref
@@ -11,9 +11,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 // A2 file:T09.overload.hpp line:20
diff --git a/test/T10.inheritance.ref b/test/T10.inheritance.ref
index fc6777c6..b68a52a1 100644
--- a/test/T10.inheritance.ref
+++ b/test/T10.inheritance.ref
@@ -14,9 +14,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 // Base file:T10.inheritance.hpp line:19
diff --git a/test/T11.override.ref b/test/T11.override.ref
index e700535e..8240e8a4 100644
--- a/test/T11.override.ref
+++ b/test/T11.override.ref
@@ -12,9 +12,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 // Base file:T11.override.hpp line:21
diff --git a/test/T12.operator.ref b/test/T12.operator.ref
index 41790c33..f5f11081 100644
--- a/test/T12.operator.ref
+++ b/test/T12.operator.ref
@@ -8,9 +8,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T12_operator(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T15.copy.ref b/test/T15.copy.ref
index 546cb68a..52d77d4b 100644
--- a/test/T15.copy.ref
+++ b/test/T15.copy.ref
@@ -14,9 +14,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T15_copy(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T15.inner_class.ref b/test/T15.inner_class.ref
index 9eb14452..27cbc707 100644
--- a/test/T15.inner_class.ref
+++ b/test/T15.inner_class.ref
@@ -10,9 +10,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 // Base file:T15.inner_class.hpp line:16
@@ -85,9 +85,9 @@ void bind_T15_inner_class(std::function< pybind11::module &(std::string const &n
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 // n1::A file:T15.inner_class.hpp line:45
@@ -130,9 +130,9 @@ void bind_T15_inner_class_1(std::function< pybind11::module &(std::string const
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 // n1::n2::A file:T15.inner_class.hpp line:48
@@ -174,9 +174,9 @@ void bind_T15_inner_class_2(std::function< pybind11::module &(std::string const
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T15_inner_class_3(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T17.anonymous.ref b/test/T17.anonymous.ref
index a07f8173..3a329e1f 100644
--- a/test/T17.anonymous.ref
+++ b/test/T17.anonymous.ref
@@ -11,9 +11,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T17_anonymous(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T20.template.ref b/test/T20.template.ref
index 4f26dae7..5a9d07bd 100644
--- a/test/T20.template.ref
+++ b/test/T20.template.ref
@@ -13,9 +13,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T20_template(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T30.include.ref b/test/T30.include.ref
index a3fa89fb..1436c588 100644
--- a/test/T30.include.ref
+++ b/test/T30.include.ref
@@ -8,9 +8,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T30_include_incl_a_include(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -33,9 +33,9 @@ void bind_T30_include_incl_a_include(std::function< pybind11::module &(std::stri
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T30_include_incl_b_include(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -58,9 +58,9 @@ void bind_T30_include_incl_b_include(std::function< pybind11::module &(std::stri
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T30_include(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T31.include_for_class.ref b/test/T31.include_for_class.ref
index dddc210f..0da9b810 100644
--- a/test/T31.include_for_class.ref
+++ b/test/T31.include_for_class.ref
@@ -8,9 +8,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T31_include_for_class_incl_a_include(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -33,9 +33,9 @@ void bind_T31_include_for_class_incl_a_include(std::function< pybind11::module &
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T31_include_for_class_incl_b_include(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T32.call_guard.ref b/test/T32.call_guard.ref
index 933b8f12..e4815408 100644
--- a/test/T32.call_guard.ref
+++ b/test/T32.call_guard.ref
@@ -9,9 +9,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T32_call_guard(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T40.stl.ref b/test/T40.stl.ref
index 14da6914..b944358c 100644
--- a/test/T40.stl.ref
+++ b/test/T40.stl.ref
@@ -12,9 +12,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_stl_vector(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -39,9 +39,9 @@ void bind_std_stl_vector(std::function< pybind11::module &(std::string const &na
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T40_stl(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T42.stl.names.map.ref b/test/T42.stl.names.map.ref
index 13ba0771..551d9550 100644
--- a/test/T42.stl.names.map.ref
+++ b/test/T42.stl.names.map.ref
@@ -15,9 +15,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_stl_function(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -75,9 +75,9 @@ void bind_std_stl_function(std::function< pybind11::module &(std::string const &
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_functional_hash(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -168,9 +168,9 @@ void bind_std_functional_hash(std::function< pybind11::module &(std::string cons
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T42_stl_names_map(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T42.stl.names.multi.ref b/test/T42.stl.names.multi.ref
index a1b707cc..68a25f88 100644
--- a/test/T42.stl.names.multi.ref
+++ b/test/T42.stl.names.multi.ref
@@ -15,9 +15,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_stl_function(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -72,9 +72,9 @@ void bind_std_stl_function(std::function< pybind11::module &(std::string const &
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_functional_hash(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -145,9 +145,9 @@ void bind_std_functional_hash(std::function< pybind11::module &(std::string cons
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_unordered_set(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -239,9 +239,9 @@ void bind_std_unordered_set(std::function< pybind11::module &(std::string const
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T42_stl_names_multi(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T42.stl.names.multimap.ref b/test/T42.stl.names.multimap.ref
index 0e095ea0..94b1fe71 100644
--- a/test/T42.stl.names.multimap.ref
+++ b/test/T42.stl.names.multimap.ref
@@ -15,9 +15,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_stl_function(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -71,9 +71,9 @@ void bind_std_stl_function(std::function< pybind11::module &(std::string const &
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_functional_hash(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -123,9 +123,9 @@ void bind_std_functional_hash(std::function< pybind11::module &(std::string cons
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_unordered_map(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -184,9 +184,9 @@ void bind_std_unordered_map(std::function< pybind11::module &(std::string const
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T42_stl_names_multimap(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T42.stl.names.multiset.ref b/test/T42.stl.names.multiset.ref
index 5369bc5e..1cf6620b 100644
--- a/test/T42.stl.names.multiset.ref
+++ b/test/T42.stl.names.multiset.ref
@@ -15,9 +15,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_stl_function(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -70,9 +70,9 @@ void bind_std_stl_function(std::function< pybind11::module &(std::string const &
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_functional_hash(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -123,9 +123,9 @@ void bind_std_functional_hash(std::function< pybind11::module &(std::string cons
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_unordered_set(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -183,9 +183,9 @@ void bind_std_unordered_set(std::function< pybind11::module &(std::string const
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T42_stl_names_multiset(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T42.stl.names.ref b/test/T42.stl.names.ref
index 949268f4..5ed5c955 100644
--- a/test/T42.stl.names.ref
+++ b/test/T42.stl.names.ref
@@ -11,9 +11,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_stl_list(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -65,9 +65,9 @@ void bind_std_stl_list(std::function< pybind11::module &(std::string const &name
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_stl_deque(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -157,9 +157,9 @@ void bind_std_stl_deque(std::function< pybind11::module &(std::string const &nam
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_forward_list(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -214,9 +214,9 @@ void bind_std_forward_list(std::function< pybind11::module &(std::string const &
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T42_stl_names(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T42.stl.names.set.ref b/test/T42.stl.names.set.ref
index ffa7d8fa..c2e2c7f6 100644
--- a/test/T42.stl.names.set.ref
+++ b/test/T42.stl.names.set.ref
@@ -15,9 +15,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_stl_function(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -74,9 +74,9 @@ void bind_std_stl_function(std::function< pybind11::module &(std::string const &
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_std_functional_hash(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -163,9 +163,9 @@ void bind_std_functional_hash(std::function< pybind11::module &(std::string cons
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T42_stl_names_set(std::function< pybind11::module &(std::string const &namespace_) > &M)
diff --git a/test/T50.namespace_binder.ref b/test/T50.namespace_binder.ref
index 64092fbe..23ae0d9f 100644
--- a/test/T50.namespace_binder.ref
+++ b/test/T50.namespace_binder.ref
@@ -7,9 +7,9 @@
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T50_namespace_binder(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -31,9 +31,9 @@ void bind_T50_namespace_binder(std::function< pybind11::module &(std::string con
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T50_namespace_binder_1(std::function< pybind11::module &(std::string const &namespace_) > &M)
@@ -55,9 +55,9 @@ void bind_T50_namespace_binder_1(std::function< pybind11::module &(std::string c
 
 #ifndef BINDER_PYBIND11_TYPE_CASTER
 	#define BINDER_PYBIND11_TYPE_CASTER
-	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>);
-	PYBIND11_DECLARE_HOLDER_TYPE(T, T*);
-	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>);
+	PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)
+	PYBIND11_DECLARE_HOLDER_TYPE(T, T*)
+	PYBIND11_MAKE_OPAQUE(std::shared_ptr<void>)
 #endif
 
 void bind_T50_namespace_binder_2(std::function< pybind11::module &(std::string const &namespace_) > &M)