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 3772cc159b1..cda250c6009 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 @@ -7966,5 +7966,24 @@ public class AST2CPPTests extends AST2BaseTest { bh.assertProblem("sink3(z7)", 5); } + // struct A {}; + // namespace ns { + // struct C { + // int operator+(int); + // }; + // int operator+(const C&, const A&); + // } + // + // void check(int); + // int main(int argc, char** argv) { + // A a; + // ns::C c; + // check(c+1); + // check(c+a); + // } + public void testADLForOperators_296906() 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 5135dfbae12..64922f6c79f 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 @@ -2825,11 +2825,9 @@ public class CPPSemantics { if (scope == null) return null; lookup(funcData, scope); - if (methodData == null || !methodData.hasResults()) { - try { - doKoenigLookup(funcData); - } catch (DOMException e) { - } + try { + doKoenigLookup(funcData); + } catch (DOMException e) { } } } catch (DOMException e) {