diff options
author | Sergey Prigogin | 2013-09-16 21:13:59 +0000 |
---|---|---|
committer | Sergey Prigogin | 2013-09-16 21:27:24 +0000 |
commit | 0e36772a55895b53deb6bad12a9b758e4b556870 (patch) | |
tree | 1845c55c9107bc304158ea91d0c113e844dcd5ce | |
parent | 8fd76f3f548e23e4a360da464911d17ccd8a1272 (diff) | |
download | org.eclipse.cdt-0e36772a55895b53deb6bad12a9b758e4b556870.tar.gz org.eclipse.cdt-0e36772a55895b53deb6bad12a9b758e4b556870.tar.xz org.eclipse.cdt-0e36772a55895b53deb6bad12a9b758e4b556870.zip |
Bug 412766 - Allow indexing to continue after encountering an invalid
class member.
2 files changed, 17 insertions, 3 deletions
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java index 57f2c350297..b57ac7e4338 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java @@ -1334,4 +1334,13 @@ public class IndexCPPBindingResolutionBugs extends IndexBindingResolutionTestBas assertTrue(name instanceof IASTImplicitName); assertEquals("base", name.resolveBinding().getOwner().getName()); } + + // class A { + // class B; + // }; + // class D : public A {}; + // class D::B {}; + public void _testInvalidOwner_412766() throws Exception { + checkBindings(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java index 5ce755b25cf..b0c9835174e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java @@ -540,9 +540,14 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { if (parent instanceof IPDOMCPPClassType) { if (originalBinding instanceof IEnumerator) originalBinding = originalBinding.getOwner(); - int visibility = getVisibility(originalBinding); - if (visibility >= 0) { - ((IPDOMCPPClassType) parent).addMember(binding, visibility); + try { + int visibility = getVisibility(originalBinding); + if (visibility >= 0) { + ((IPDOMCPPClassType) parent).addMember(binding, visibility); + return; + } + } catch (IllegalArgumentException e) { + CCorePlugin.log(e); return; } } |