diff options
Diffstat (limited to 'tests/headers/partial-specialization-and-inheritance.hpp')
-rw-r--r-- | tests/headers/partial-specialization-and-inheritance.hpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/headers/partial-specialization-and-inheritance.hpp b/tests/headers/partial-specialization-and-inheritance.hpp new file mode 100644 index 00000000..4eb8f545 --- /dev/null +++ b/tests/headers/partial-specialization-and-inheritance.hpp @@ -0,0 +1,40 @@ +// bindgen-unstable + +// This was originally a test case generated by creducing errors in SpiderMonkey +// bindings generation. I've tried to make it understandable by giving more +// meaningful names to everything, and a couple comments. +// +// We don't support partial template specialization, but we *should* +// successfully parse this header, and generate bindings for it, but the usage +// of the partial template specialization should result in opaque blobs. + +// A base class providing a method. +template <typename T> +class Base { +public: + void some_method(T, T); +}; + +// A template with a default representation. +template <typename U> +class Derived { + bool b; +}; + +// A partial specialization for pointers. Note that this should have a different +// and larger layout than the template it is specializing. +template <typename U> +class Derived<U*> : public Base<U*> { + int x; + int y; +}; + +// A struct that uses the partial specialization and method from the partial +// specialization's base class. +struct Usage { + Usage() { + static_member.some_method(this, this); + } + + static Derived<Usage*> static_member; +}; |