diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-11-05 23:25:18 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-11-05 23:25:18 +0000 |
commit | 7d391557ccfb3edfc3036057099a8885f35ea1d5 (patch) | |
tree | a9cf66eed57021dee0a4c22c4cb92d6fdd9c159b /clang/test/SemaCXX/crashes.cpp | |
parent | 25edf4302f07a59a49324731e153977806ecb131 (diff) | |
download | bcm5719-llvm-7d391557ccfb3edfc3036057099a8885f35ea1d5.tar.gz bcm5719-llvm-7d391557ccfb3edfc3036057099a8885f35ea1d5.zip |
When determining which template partial specialization is more specialized,
make sure to setup the instantiation stack. Fixes rdar://8620775 & http://llvm.org/PR8234
llvm-svn: 118314
Diffstat (limited to 'clang/test/SemaCXX/crashes.cpp')
-rw-r--r-- | clang/test/SemaCXX/crashes.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/crashes.cpp b/clang/test/SemaCXX/crashes.cpp index 53eecb6c14f..87bde2aa939 100644 --- a/clang/test/SemaCXX/crashes.cpp +++ b/clang/test/SemaCXX/crashes.cpp @@ -41,3 +41,30 @@ struct { new Y // expected-error{{no viable conversion}} }; } + +// http://llvm.org/PR8234 +namespace PR8234 { +template<typename Signature> +class callback +{ +}; + +template<typename R , typename ARG_TYPE0> +class callback<R( ARG_TYPE0)> +{ + public: + callback() {} +}; + +template< typename ARG_TYPE0> +class callback<void( ARG_TYPE0)> +{ + public: + callback() {} +}; + +void f() +{ + callback<void(const int&)> op; +} +} |