From e75a7388a05bab1a1a287cd6ae36175c26a46851 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Wed, 7 Sep 2011 12:57:05 +0200 Subject: [PATCH] Bug 356730: Resolution of designated initializers --- .../index/tests/IndexCBindingResolutionBugs.java | 11 +++++++++++ .../cdt/internal/core/dom/parser/c/CVisitor.java | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionBugs.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionBugs.java index ffb32ea2685..53022da65c9 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionBugs.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCBindingResolutionBugs.java @@ -471,4 +471,15 @@ public class IndexCBindingResolutionBugs extends IndexBindingResolutionTestBase getBindingFromASTName("f255", 0); getBindingFromASTName("f256", 0); } + + // struct B { + // float f; + // }; + + // struct B b = { + // .f = 3.1 + // }; + public void testDesignatedInitializer_Bug210019() throws Exception { + IField f= getBindingFromASTName("f", 0); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java index d3a193b02ed..1e107c0b39d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java @@ -879,8 +879,8 @@ public class CVisitor extends ASTQueries { else if (simpleDecl.getDeclSpecifier() instanceof IASTCompositeTypeSpecifier) struct = ((IASTCompositeTypeSpecifier) simpleDecl.getDeclSpecifier()).getName().resolveBinding(); - if (struct instanceof CStructure) { - return ((CStructure) struct).findField(((ICASTFieldDesignator) node).getName().toString()); + if (struct instanceof ICompositeType) { + return ((ICompositeType) struct).findField(((ICASTFieldDesignator) node).getName().toString()); } else if (struct instanceof ITypeContainer) { IType type; type = ((ITypeContainer) struct).getType();