From 4276eda033ccaea60cb51399e73fcb7ab04afffe Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Wed, 2 Mar 2011 10:31:44 +0000 Subject: [PATCH] Bug 337686: Function-call on dependent expression. --- .../cdt/core/parser/tests/ast2/AST2TemplateTests.java | 8 ++++++++ .../core/dom/parser/cpp/CPPASTFunctionCallExpression.java | 3 +++ 2 files changed, 11 insertions(+) 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 28f5b455076..8d9803b3dc5 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 @@ -5258,4 +5258,12 @@ public class AST2TemplateTests extends AST2BaseTest { public void testSyntaxErrorInReturnTypeOfFunctionInstance_Bug336426() throws Exception { parseAndCheckBindings(); } + + // template struct A {}; + // template void f(Functor functor) { + // A a; + // } + public void testFunctionCallOnDependentName_Bug337686() throws Exception { + parseAndCheckBindings(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionCallExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionCallExpression.java index 80697be97ee..9bd73c413bb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionCallExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionCallExpression.java @@ -42,6 +42,7 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTNode; import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguityParent; import org.eclipse.cdt.internal.core.dom.parser.ProblemType; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics; +import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil; @@ -250,6 +251,8 @@ public class CPPASTFunctionCallExpression extends ASTNode implements if (t instanceof IFunctionType) { return typeFromReturnType(((IFunctionType) t).getReturnType()); } + if (CPPTemplates.isDependentType(t)) + return CPPUnknownClass.createUnnamedInstance(); return new ProblemType(ISemanticProblem.TYPE_UNKNOWN_FOR_EXPRESSION); }