From c0b169fb8c88d0cd025abe927d96e7070c9e3fc6 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Tue, 27 Jan 2009 17:57:32 +0000 Subject: [PATCH] Don't attempt overload resolution for unknown functions. --- .../core/parser/tests/ast2/AST2TemplateTests.java | 13 +++++++++++++ .../core/dom/parser/cpp/semantics/CPPSemantics.java | 3 +++ 2 files changed, 16 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 926d73204c3..d13c756f2ba 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 @@ -3689,4 +3689,17 @@ public class AST2TemplateTests extends AST2BaseTest { BindingAssertionHelper bh= new BindingAssertionHelper(getAboveComment(), true); bh.assertNonProblem("substr(0)", 6, ICPPMethod.class); } + + // class C {}; + // template class XT { + // T field; + // void bla() { + // C c; + // field.m(c); + // } + // }; + public void testResolutionOfUnknownFunctions() throws Exception { + String code= getAboveComment(); + parseAndCheckBindings(code, ParserLanguage.CPP); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java index 338bc607324..ac2576bac74 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java @@ -2006,6 +2006,9 @@ public class CPPSemantics { if (++viableCount == 1) { firstViable= f; } + if (f instanceof ICPPUnknownBinding) { + return f; + } } } if (firstViable == null)