diff options
Diffstat (limited to 'gcc/testsuite/obj-c++.dg/encode-10.mm')
-rw-r--r-- | gcc/testsuite/obj-c++.dg/encode-10.mm | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/gcc/testsuite/obj-c++.dg/encode-10.mm b/gcc/testsuite/obj-c++.dg/encode-10.mm new file mode 100644 index 000000000..2b3af88dc --- /dev/null +++ b/gcc/testsuite/obj-c++.dg/encode-10.mm @@ -0,0 +1,46 @@ +/* Test for @encode in templates. */ +/* { dg-options "-lobjc" } */ +/* { dg-do run } */ +#include <string.h> +#include <stdlib.h> + +template<typename T> +const char *my_encode(int variant) +{ + const char *result; + + switch (variant) + { + case 0: + result = @encode(T); + break; + case 1: + result = @encode(T*); + break; + case 2: + result = @encode(const T*); + break; + default: + result = @encode(int); + break; + } + + return result; +} + +int main() +{ + if (strcmp (@encode(char), my_encode<char>(0))) + abort (); + + if (strcmp (@encode(char *), my_encode<char>(1))) + abort (); + + if (strcmp (@encode(const char *), my_encode<char>(2))) + abort (); + + if (strcmp (@encode(int), my_encode<char>(3))) + abort (); + + return 0; +} |