From bf2ea129515fb61c8fe00812ca67969e514ebf39 Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Tue, 19 Jan 2016 17:08:19 -0500 Subject: [PATCH] Bug 485985 - Function call expression with dependent function argument Change-Id: I56358d53020a2b586a41fac66f40170901c872f5 --- .../parser/tests/ast2/AST2TemplateTests.java | 26 +++++++++++++++++++ .../parser/cpp/semantics/EvalFunctionSet.java | 4 ++- 2 files changed, 29 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 8c39bbfb901..dd8987d31eb 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 @@ -8709,6 +8709,32 @@ public class AST2TemplateTests extends AST2TestBase { BindingAssertionHelper helper = getAssertionHelper(); helper.assertNonProblem("waldo", ICPPDeferredFunction.class); } + + // template + // struct enable_if {}; + // + // template + // struct enable_if { + // typedef T type; + // }; + // + // template + // constexpr bool F() { + // return false; + // } + // + // template + // typename enable_if(), void>::type waldo(T p); // problem on the return type + // + // struct A {}; + // + // void test() { + // A a; + // waldo(a); // problem on waldo + // } + public void testDependentFunctionSet_485985() throws Exception { + parseAndCheckBindings(); + } // template // struct C { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionSet.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionSet.java index 5ac947ff012..fa92e152cee 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionSet.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionSet.java @@ -132,7 +132,9 @@ public class EvalFunctionSet extends CPPDependentEvaluation { @Override public boolean isValueDependent() { - return false; + // The value of the function set (which function it resolves to) is + // dependent under the same circumstances when its type is dependent. + return isTypeDependent(); } @Override