From c4e19ace4c37879a7ef9e719b46d7defe7eb72b1 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 307f11347ff..c2210a5712e 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 @@ -464,4 +464,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 56598d75ef4..ef1504c09e4 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 @@ -887,8 +887,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();