diff options
author | Nathan Ridge | 2017-05-10 00:58:39 +0000 |
---|---|---|
committer | Nathan Ridge | 2017-06-20 06:34:06 +0000 |
commit | 3e0853ae0c3b9703f8e6e2112829dbc6a8485c4c (patch) | |
tree | 60d216a6f901930b4fea6e0484111c6ffd16cda3 /core/org.eclipse.cdt.core.tests | |
parent | d6dccc85582437a6632a349d3fda6463ad3ce8ca (diff) | |
download | org.eclipse.cdt-3e0853ae0c3b9703f8e6e2112829dbc6a8485c4c.tar.gz org.eclipse.cdt-3e0853ae0c3b9703f8e6e2112829dbc6a8485c4c.tar.xz org.eclipse.cdt-3e0853ae0c3b9703f8e6e2112829dbc6a8485c4c.zip |
Bug 516338 - Improve typedef preservation
Besides the UX advantages of typedef preservation (such as refactorings
preserving typedefs), it's important for correctness because the
arguments of template aliases can be subject to SFINAE even if they
don't participate in the target type.
Change-Id: I4e71372553dc418d1b8c3e27bd2c0387a41a3269
Diffstat (limited to 'core/org.eclipse.cdt.core.tests')
2 files changed, 52 insertions, 3 deletions
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 b1fdf5ce787..47f4a66ef6a 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 @@ -4112,7 +4112,7 @@ public class AST2TemplateTests extends AST2CPPTestBase { public void testTypedefPreservation_380498c() throws Exception { BindingAssertionHelper ba= getAssertionHelper(); ICPPVariable s = ba.assertNonProblem("s :", "s", ICPPVariable.class); - assertTrue(s.getType() instanceof ITypedef); + assertInstance(s.getType(), ITypedef.class); assertEquals("string", ASTTypeUtil.getType(s.getType(), false)); } 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 d0026141c17..70289ca4118 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 @@ -98,7 +98,7 @@ public class IndexCPPTemplateResolutionTest extends IndexBindingResolutionTestBa } public IndexCPPTemplateResolutionTest() { - setStrategy(new ReferencedProject(true)); + setStrategy(new SinglePDOMTestStrategy(true)); } // template<typename _TpAllocator> @@ -3089,6 +3089,55 @@ public class IndexCPPTemplateResolutionTest extends IndexBindingResolutionTestBa public void testRegression_402498() throws Exception { checkBindings(); } + + // template <typename Iterator> + // struct iterator_traits { + // typedef typename Iterator::value_type value_type; + // }; + // + // template <typename I> + // struct normal; + // + // template <typename T> + // struct normal<T*> { + // typedef T value_type; + // }; - + // template <class Iterator> + // struct iterator_value { + // typedef typename iterator_traits<Iterator>::value_type type; + // }; + // + // template <typename BidiIter, typename RegexTraits = typename iterator_value<BidiIter>::type> + // struct regex_compiler; + // + // typedef normal<char*> Iter; + // + // typedef regex_compiler<Iter> sregex_compiler; + // + // template<typename Char> + // struct xpression_linker; + // + // template<typename BidiIter> + // struct matchable_ex { + // typedef BidiIter iterator_type; + // typedef typename iterator_value<iterator_type>::type char_type; + // + // void link(xpression_linker<char_type>); + // }; + // + // template<typename BidiIter> + // struct sub_match { + // typedef typename iterator_value<BidiIter>::type value_type; + // operator value_type() const; + // }; + // + // void waldo(char); + // + // void foo(sub_match<Iter> w) { + // waldo(w); + // } + public void testRegression_516338() throws Exception { + checkBindings(); + } } |