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 c5679dcd0dd..b60d2b353d7 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 @@ -8173,6 +8173,21 @@ public class AST2TemplateTests extends AST2TestBase { assertSameType((ITypedef) helper.assertNonProblem("U::type"), CommonTypes.int_); } + // template + // struct A { + // typedef T type; + // }; + // + // struct B { + // static const A c; + // }; + // + // decltype(B::c)::type x; + public void testDependentDecltypeInNameQualifier_429837() throws Exception { + BindingAssertionHelper helper = getAssertionHelper(); + assertSameType((ITypedef) helper.assertNonProblem("decltype(B::c)::type"), CommonTypes.int_); + } + // namespace N { // template // struct C; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDecltypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDecltypeSpecifier.java index ed2ef66fb3e..caf601b7f3f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDecltypeSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDecltypeSpecifier.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2013 Nathan Ridge + * Copyright (c) 2013, 2014 Nathan Ridge * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExpression; import org.eclipse.cdt.core.parser.Keywords; 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.cpp.semantics.SemanticUtil; /** * Implementation of ICPPASTDecltypeSpecifier. @@ -73,6 +74,7 @@ public class CPPASTDecltypeSpecifier extends ASTNode @Override public IBinding resolveBinding() { IType type = fDecltypeExpression.getExpressionType(); + type = SemanticUtil.getNestedType(type, SemanticUtil.CVTYPE); if (type instanceof IBinding) return (IBinding) type; return null;