From 60d02ba1454e36787d06b8ce7bff8aa77bf80352 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Sun, 27 Apr 2008 22:32:49 +0000 Subject: [PATCH] Added two failing test cases, _testSpecializationSelection and _testFunctionTemplateWithUsing. --- .../parser/tests/ast2/AST2TemplateTests.java | 53 ++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java index a4d216ad4fc..f8a35700e90 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java @@ -2058,7 +2058,27 @@ public class AST2TemplateTests extends AST2BaseTest { assertInstance(f1.getParameters()[0].getType(), ICPPClassType.class); assertInstance(f1.getParameters()[0].getType(), ICPPTemplateInstance.class); } - + + // namespace ns { + // + // template + // struct pair { + // pair(const _M1& _a, const _M2& _b) {} + // }; + // + // template + // pair<_T1, _T2> make_pair(_T1 _x, _T2 _y) { return pair<_T1, _T2>(_x, _y); } + // + // } + // + // using ns::pair; + // using ns::make_pair; + // pair p = make_pair(1, 2); + public void _testFunctionTemplateWithUsing() throws Exception { + BindingAssertionHelper bh= new BindingAssertionHelper(getAboveComment(), true); + ICPPFunction fn= bh.assertNonProblem("make_pair(1", 9, ICPPFunction.class); + } + // // Brian W.'s example from bugzilla#167098 // template // class D { //CPPClassTemplate @@ -2239,6 +2259,37 @@ public class AST2TemplateTests extends AST2BaseTest { } } + // template + // struct IterTraits { + // typedef typename _Iterator::iter_reference traits_reference; + // }; + // + // template + // struct IterTraits<_Tp*> { + // typedef _Tp& traits_reference; + // }; + // + // template + // struct Iter { + // typedef typename IterTraits<_Pointer>::traits_reference iter_reference; + // }; + // + // void main(Iter::iter_reference r); + public void _testSpecializationSelection() throws Exception { + IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); + CPPNameCollector col = new CPPNameCollector(); + tu.accept(col); + for (IASTName name : col.nameList) { + if ("r".equals(String.valueOf(name))) { + IBinding b0 = name.resolveBinding(); + IType type = ((ICPPVariable) b0).getType(); + type = getUltimateType(type, false); + assertInstance(type, IBasicType.class); + assertEquals("int", ASTTypeUtil.getType(type)); + } + } + } + // template // class A { // public: