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 | fc4ba4dcd06d1f1f59809e799a3da9ba428a88fc (patch) | |
tree | 24f7fd5951a851836a0b4fb6d36aa2936b3d67ee /test/C++Frontend | |
parent | d18971d2c437cc5b0cd6237383ef490583fb5e6e (diff) | |
download | external_llvm-fc4ba4dcd06d1f1f59809e799a3da9ba428a88fc.zip external_llvm-fc4ba4dcd06d1f1f59809e799a3da9ba428a88fc.tar.gz external_llvm-fc4ba4dcd06d1f1f59809e799a3da9ba428a88fc.tar.bz2 |
Testcase for PR1634
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41824 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/C++Frontend')
-rw-r--r-- | test/C++Frontend/2007-09-10-RecursiveTypeResolution.cpp | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/test/C++Frontend/2007-09-10-RecursiveTypeResolution.cpp b/test/C++Frontend/2007-09-10-RecursiveTypeResolution.cpp new file mode 100644 index 0000000..f813944 --- /dev/null +++ b/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); + } +} + |