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 fb814126819..0028d9645d0 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 @@ -7310,6 +7310,17 @@ public class AST2TemplateTests extends AST2TestBase { BindingAssertionHelper helper = new BindingAssertionHelper(getAboveComment(), true); helper.assertProblem("bind(s, 0, foo)", "bind"); } + + + // template + // T forward(T); + // template + // int combine(S1&& r1, S2&& r2); + // template + // auto combine(S1 r1, S2 r2) -> decltype(combine(forward(r1), forward(r2))); + public void testUnsupportedOperationExceptionInASTAmbiguousNode_402085() throws Exception { + parseAndCheckBindings(); + } // template // struct ice_or; 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 126a1dd02a6..1186983820e 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 @@ -699,6 +699,9 @@ public class CPPSemantics { private static void getAssociatedScopes(IType t, Set namespaces, Set friendFns, ObjectSet handled, CPPASTTranslationUnit tu) throws DOMException { t = getNestedType(t, TDEF | CVTYPE | PTR | ARRAY | REF); + // No point getting namespaces associated with a dependent type - we don't know what they are yet. + if (CPPTemplates.isDependentType(t)) + return; if (t instanceof IBinding) { if (handled.containsKey(t)) return;