From 9cd97af5e577371a75f4c6a96d1940f812c070f0 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Wed, 14 May 2008 12:46:02 +0000 Subject: [PATCH] Testcase for resolving an iterators of std::vector. --- .../tests/IndexCPPTemplateResolutionTest.java | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java index dfc0ca2d9de..2c68729385b 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java @@ -1209,4 +1209,59 @@ public class IndexCPPTemplateResolutionTest extends IndexBindingResolutionTestBa assertTrue(type instanceof IBasicType); assertEquals(((IBasicType)type).getType(), IBasicType.t_int); } + + + // template struct iterator_traits { + // typedef typename _Iterator::pointer pointer; + // }; + // + // template struct iterator_traits<_Tp*> { + // typedef _Tp* pointer; + // }; + // + // template class normal_iterator { + // protected: + // _Iterator _M_current; + // + // public: + // typedef typename iterator_traits<_Iterator>::pointer pointer; + // normal_iterator() : _M_current(_Iterator()) { } + // + // pointer operator->() const { + // return _M_current; + // } + // }; + // + // template class allocator { + // public: + // typedef _Tp* pointer; + // }; + // + // template > + // class vector { + // typedef vector<_Tp, _Alloc> vector_type; + // + // public: + // typedef typename _Alloc::pointer pointer; + // typedef normal_iterator iterator; + // }; + // + + // struct MyStruct { + // int member; + // }; + // typedef vector VS1; + // void test() { + // VS1::iterator it; + // it->member; // it->member + // } + public void testVectorIterator() throws Exception { + ICPPField t2 = getBindingFromASTName("member; // it->member", 6, ICPPField.class); + ICPPClassType ct= t2.getClassOwner(); + assertEquals("MyStruct", ct.getName()); + + final IType type = t2.getType(); + assertTrue(type instanceof IBasicType); + assertEquals(((IBasicType)type).getType(), IBasicType.t_int); + } }