diff options
author | Sergey Prigogin | 2014-01-16 04:06:08 +0000 |
---|---|---|
committer | Sergey Prigogin | 2014-01-16 04:06:08 +0000 |
commit | 8d14ab8793d3a50857bcb159242146f654a77af3 (patch) | |
tree | 4a608e0e9db3e5b9dbf272c6f56f02a755f974b9 | |
parent | f1639f8a859821bd2767f1ca7decc8eff3fa3d18 (diff) | |
download | org.eclipse.cdt-8d14ab8793d3a50857bcb159242146f654a77af3.tar.gz org.eclipse.cdt-8d14ab8793d3a50857bcb159242146f654a77af3.tar.xz org.eclipse.cdt-8d14ab8793d3a50857bcb159242146f654a77af3.zip |
Bug 425833 - IllegalArgumentException I is not a member of Cls1
Change-Id: I61d52d2585142c15be21638e614d5b8daa13dfae
-rw-r--r-- | core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMemberBlock.java | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMemberBlock.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMemberBlock.java index 4fbbeb05727..09fff8b6d20 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMemberBlock.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMemberBlock.java @@ -15,6 +15,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.dom.IPDOMVisitor; import org.eclipse.cdt.core.dom.ast.IBinding; +import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; @@ -135,7 +136,7 @@ public class PDOMCPPMemberBlock { int item = 0; long memberRecord; while (item < MAX_MEMBER_COUNT && (memberRecord = getMemberRecord(item++)) != 0) { - PDOMNode node = linkage.getNode(memberRecord); + PDOMNode node = PDOMNode.load(getPDOM(), memberRecord); if (node != null) { if (visitor.visit(node)) node.accept(visitor); @@ -174,16 +175,13 @@ public class PDOMCPPMemberBlock { * Returns visibility of the member, or -1 if the given binding is not a member. */ public int getVisibility(IBinding member) throws CoreException { - return getVisibility(this, member); + IIndexFragmentBinding indexMember = getPDOM().adaptBinding(member); + if (!(indexMember instanceof PDOMNode)) + return -1; + return getVisibility(this, (PDOMNode) indexMember); } - private static int getVisibility(PDOMCPPMemberBlock block, IBinding member) throws CoreException { - if (!(member instanceof PDOMNode)) - return -1; - - PDOMNode memberNode = (PDOMNode) member; - if (memberNode.getPDOM() != block.getPDOM()) - return -1; + private static int getVisibility(PDOMCPPMemberBlock block, PDOMNode memberNode) throws CoreException { long memberRecord = memberNode.getRecord(); do { |