diff options
| author | Chris Lattner <sabre@nondot.org> | 2007-09-11 00:39:43 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2007-09-11 00:39:43 +0000 |
| commit | 0678def8d3255461afba222bdac5ab9895da249b (patch) | |
| tree | 9982076d1037acccf531169f8e75d320f6704617 | |
| parent | d67479b6ee621964b452fa84e65ff12c89b5c4c0 (diff) | |
| download | bcm5719-llvm-0678def8d3255461afba222bdac5ab9895da249b.tar.gz bcm5719-llvm-0678def8d3255461afba222bdac5ab9895da249b.zip | |
Testcase for PR1634
llvm-svn: 41824
| -rw-r--r-- | llvm/test/C++Frontend/2007-09-10-RecursiveTypeResolution.cpp | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/llvm/test/C++Frontend/2007-09-10-RecursiveTypeResolution.cpp b/llvm/test/C++Frontend/2007-09-10-RecursiveTypeResolution.cpp new file mode 100644 index 00000000000..f81394409d4 --- /dev/null +++ b/llvm/test/C++Frontend/2007-09-10-RecursiveTypeResolution.cpp @@ -0,0 +1,88 @@ +// RUN: %llvmgxx -c -emit-llvm %s -o - +// PR1634 + +namespace Manta +{ + class CallbackHandle + { + protected:virtual ~ CallbackHandle (void) + { + } + }; +template < typename Data1 > class CallbackBase_1Data:public CallbackHandle + { + }; +} + +namespace __gnu_cxx +{ + template < typename _Iterator, typename _Container > + class __normal_iterator + { + _Iterator _M_current; + }; +} + +namespace std +{ + template < typename _Tp > struct allocator + { + typedef _Tp *pointer; + }; + template < typename _InputIterator, + typename _Tp > inline void find (_InputIterator __last, + const _Tp & __val) + { + }; +} + +namespace Manta +{ + template < typename _Tp, typename _Alloc> struct _Vector_base + { + struct _Vector_impl + { + _Tp *_M_start; + }; + public: + _Vector_impl _M_impl; + }; + template < typename _Tp, typename _Alloc = std::allocator < _Tp > > + class vector:protected _Vector_base < _Tp,_Alloc > + { + public: + typedef __gnu_cxx::__normal_iterator < typename _Alloc::pointer, + vector < _Tp, _Alloc > > iterator; + iterator end () + { + } + }; + class MantaInterface + { + }; + class RTRT + { + virtual CallbackHandle *registerTerminationCallback (CallbackBase_1Data < + MantaInterface * >*); + virtual void unregisterCallback (CallbackHandle *); + typedef vector < CallbackBase_1Data < int >*>PRCallbackMapType; + PRCallbackMapType parallelPreRenderCallbacks; + }; +} +using namespace Manta; +CallbackHandle * +RTRT::registerTerminationCallback (CallbackBase_1Data < MantaInterface * >*cb) +{ + return cb; +} + +void +RTRT::unregisterCallback (CallbackHandle * callback) +{ + { + typedef CallbackBase_1Data < int > callback_t; + callback_t *cb = static_cast < callback_t * >(callback); + find (parallelPreRenderCallbacks.end (), cb); + } +} + |

