From c753fd5b7481f5618b2a8d1f342a74376c4ca1bc Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Wed, 25 Nov 2009 18:32:50 +0000 Subject: [PATCH] Bug 294730: Initialization of class objects. --- .../core/parser/tests/ast2/AST2CPPTests.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java index 82bf53d2ca3..3772cc159b1 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java @@ -7903,5 +7903,68 @@ public class AST2CPPTests extends AST2BaseTest { final String code= getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } + + // template struct enable_if_same {}; + // template struct enable_if_same { + // typedef char type; + // }; + // struct X { + // X(); + // X(X& rhs); + // template X(T& rhs, typename enable_if_same::type = 0); + // X& operator=(X rhs); + // + // struct ref { ref(X*p) : p(p) {} X* p; }; + // operator ref(); + // X(ref rhs); + // }; + // + // X source(); + // X const csource(); + // void sink(X); + // void sink2(X&); + // void sink2(X const&); + // void sink3(X&); + // template void tsink(T); + // + // void test() { + // X z2((X())); + // X z4 = X(); + // X z5 = z4; + // X z6(z4); + // X const z7; + // X z8 = z7; + // X z9(z7); + // sink(source()); + // sink(csource()); + // sink2(source()); + // sink2(csource()); + // sink(z5); + // sink(z7); + // sink2(z4); + // sink2(z7); + // tsink(source()); + // typedef X const XC; + // sink2(XC(X())); + // z4 = z5; + // z4 = source(); + + // // expexted failures + // sink3(source()); + // sink3(csource()); + // sink3(z7); + + // } + public void testInitOfClassObjectsByRValues_294730() throws Exception { + final StringBuffer[] contents = getContents(3); + final String code= contents[0].toString(); + final String end= contents[2].toString(); + parseAndCheckBindings(code + end, ParserLanguage.CPP); + BindingAssertionHelper bh= new BindingAssertionHelper(code + contents[1] + end, true); + bh.assertProblem("sink3(source())", 5); + bh.assertProblem("sink3(csource())", 5); + bh.assertProblem("sink3(z7)", 5); + } + }