diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/SemanticsTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/SemanticsTests.java index e1a07d8dcd8..760aedb62bc 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/SemanticsTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/SemanticsTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Symbian Software Systems and others. + * Copyright (c) 2008, 2012 Symbian Software Systems and others. * 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 @@ -86,7 +86,8 @@ public class SemanticsTests extends AST2BaseTest { // operator A(); // conversion // operator B(); // conversion // }; - public void testGetDeclaredConversionOperators() throws Exception { + public void testConversionOperators() throws Exception { + // Test getDeclaredConversionOperators() BindingAssertionHelper ba= new BindingAssertionHelper(getAboveComment(), true); ICPPClassType c= ba.assertNonProblem("X {", 1, ICPPClassType.class); ICPPMethod[] cops= SemanticUtil.getDeclaredConversionOperators(c); @@ -96,11 +97,8 @@ public class SemanticsTests extends AST2BaseTest { Set expected= new HashSet(); expected.add("operator A"); expected.add("operator B"); assertEquals(expected, actual); - } - - public void testIsConversionOperator() throws Exception { - BindingAssertionHelper ba= new BindingAssertionHelper(getAboveComment(), true); - ICPPClassType c= ba.assertNonProblem("X {", 1, ICPPClassType.class); + + // Test isConversionOperator() ICPPMethod[] dms= c.getDeclaredMethods(); assertEquals(48, dms.length); diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java index b837c87a7a6..f999d7a8909 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Symbian Software Systems and others. + * Copyright (c) 2007, 2012 Symbian Software Systems and others. * 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 @@ -283,9 +283,7 @@ public class IndexCPPTemplateResolutionTest extends IndexBindingResolutionTestBa assertInstance(b0, ICPPMethod.class); assertEquals(1, getIndex().findNames(b0, IIndex.FIND_REFERENCES).length); IParameter[] parameters = ((ICPPMethod) b0).getParameters(); - System.out.println(String.valueOf(parameters)); IFunctionType type = ((ICPPMethod) b0).getType(); - System.out.println(String.valueOf(type)); } // template diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndexFileSet.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndexFileSet.java index a30d8b1f34f..61256b0efaa 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndexFileSet.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/index/IIndexFileSet.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2010 Wind River Systems, Inc. and others. + * Copyright (c) 2008, 2012 Wind River Systems, Inc. and others. * 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 @@ -12,6 +12,7 @@ package org.eclipse.cdt.core.index; import org.eclipse.cdt.core.dom.ast.IBinding; +import org.eclipse.cdt.internal.core.index.IIndexFragment; import org.eclipse.cdt.internal.core.index.IndexFileSet; import org.eclipse.core.runtime.CoreException; @@ -60,4 +61,11 @@ public interface IIndexFileSet { * @noreference This method is not intended to be referenced by clients. */ void remove(IIndexFile indexFile); + + /** + * Checks whether the given binding has a non-local declaration in + * another index fragment. + * @noreference This method is not intended to be referenced by clients. + */ + boolean containsNonLocalDeclaration(IBinding binding, IIndexFragment ignore); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTInternal.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTInternal.java index 866a55bf964..e2087d27d62 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTInternal.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTInternal.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2011 Wind River Systems, Inc. and others. + * Copyright (c) 2006, 2012 Wind River Systems, Inc. and others. * 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 @@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.dom.parser; import org.eclipse.cdt.core.dom.ast.IASTFileLocation; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IFunction; import org.eclipse.cdt.core.dom.ast.IScope; @@ -22,6 +23,7 @@ import org.eclipse.cdt.internal.core.dom.parser.c.ICInternalBinding; import org.eclipse.cdt.internal.core.dom.parser.c.ICInternalFunction; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalBinding; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalFunction; +import org.eclipse.cdt.internal.core.index.IIndexFragment; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.core.runtime.CoreException; @@ -72,7 +74,7 @@ public class ASTInternal { } } - public static IASTNode getDeclaredInSourceFileOnly(IBinding binding, boolean requireDefinition, PDOMBinding nonLocal) { + public static IASTNode getDeclaredInSourceFileOnly(IIndexFragment forFragment, IBinding binding, boolean requireDefinition, PDOMBinding nonLocal) { IASTNode[] decls; IASTNode def; if (binding instanceof ICPPInternalBinding) { @@ -105,6 +107,9 @@ public class ASTInternal { } } } + if (result == null) + return null; + if (requireDefinition && nonLocal != null) { try { if (nonLocal.hasDeclaration()) @@ -112,6 +117,12 @@ public class ASTInternal { } catch (CoreException e) { } } + + IASTTranslationUnit tu= result.getTranslationUnit(); + if (tu != null) { + if (tu.getIndexFileSet().containsNonLocalDeclaration(binding, forFragment)) + return null; + } return result; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IIndexFragment.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IIndexFragment.java index 3675ce5ed57..bc7558d648a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IIndexFragment.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IIndexFragment.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2011 Wind River Systems, Inc. and others. + * Copyright (c) 2006, 2012 Wind River Systems, Inc. and others. * 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 @@ -58,6 +58,7 @@ public interface IIndexFragment { */ final int FIND_ALL_OCCURRENCES = IIndex.FIND_ALL_OCCURRENCES; + final int FIND_NON_LOCAL_ONLY= 0x10000; /** * Property key for the fragment ID. The fragment ID should uniquely identify the fragments * usage within a logical index. @@ -223,8 +224,8 @@ public interface IIndexFragment { * Searches for all names that resolve to the given binding. You can limit the result to * references, declarations or definitions, or a combination of those. * @param binding a binding for which names are searched for - * @param flags a combination of {@link #FIND_DECLARATIONS}, {@link #FIND_DEFINITIONS} and - * {@link #FIND_REFERENCES} + * @param flags a combination of {@link #FIND_DECLARATIONS}, {@link #FIND_DEFINITIONS}, + * {@link #FIND_REFERENCES} and {@link #FIND_NON_LOCAL_ONLY} * @return an array of names * @throws CoreException */ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IndexFileSet.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IndexFileSet.java index 395eefc0664..854a486cc67 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IndexFileSet.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IndexFileSet.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2010 Wind River Systems, Inc. and others. + * Copyright (c) 2008, 2012 Wind River Systems, Inc. and others. * 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 @@ -29,6 +29,7 @@ public class IndexFileSet implements IIndexFileSet { public IndexFileSet() { } + @Override public void add(IIndexFile indexFile) { final IIndexFragmentFile fragFile = (IIndexFragmentFile) indexFile; final IIndexFragment frag= fragFile.getIndexFragment(); @@ -40,6 +41,7 @@ public class IndexFileSet implements IIndexFileSet { subSet.add(fragFile); } + @Override public void remove(IIndexFile indexFile) { final IIndexFragmentFile fragFile = (IIndexFragmentFile) indexFile; final IIndexFragment frag= fragFile.getIndexFragment(); @@ -49,21 +51,16 @@ public class IndexFileSet implements IIndexFileSet { } } + @Override public boolean containsDeclaration(IIndexBinding binding) { - return containsDeclaration(binding, false); - } - - boolean containsDeclaration(IIndexBinding binding, boolean inverse) { for (Map.Entry entry : fSubSets.entrySet()) { try { IIndexFragmentName[] names = entry.getKey().findNames(binding, IIndexFragment.FIND_DECLARATIONS_DEFINITIONS); for (IIndexFragmentName name : names) { try { - final boolean foundDecl = entry.getValue().contains((IIndexFragmentFile) name.getFile()); - if (foundDecl != inverse) { + if (entry.getValue().contains((IIndexFragmentFile) name.getFile())) return true; - } } catch (CoreException e) { CCorePlugin.log(e); } @@ -75,6 +72,33 @@ public class IndexFileSet implements IIndexFileSet { return false; } + @Override + public boolean containsNonLocalDeclaration(IBinding binding, IIndexFragment ignore) { + for (Map.Entry entry : fSubSets.entrySet()) { + try { + final IIndexFragment fragment = entry.getKey(); + final IIndexFragmentFileSet subset = entry.getValue(); + if (fragment != ignore) { + IIndexFragmentName[] names = + fragment.findNames(binding, IIndexFragment.FIND_DECLARATIONS_DEFINITIONS | IIndexFragment.FIND_NON_LOCAL_ONLY); + for (IIndexFragmentName name : names) { + try { + if (subset.contains((IIndexFragmentFile) name.getFile())) { + return true; + } + } catch (CoreException e) { + CCorePlugin.log(e); + } + } + } + } catch (CoreException e) { + CCorePlugin.log(e); + } + } + return false; + } + + @Override public IBinding[] filterFileLocalBindings(IBinding[] bindings) { return filterFileLocalBindings(bindings, false); } @@ -131,6 +155,7 @@ public class IndexFileSet implements IIndexFileSet { return result; } + @Override public boolean contains(IIndexFile file) throws CoreException { return contains(file, false); } @@ -150,29 +175,40 @@ public class IndexFileSet implements IIndexFileSet { /* (non-Javadoc) * @see org.eclipse.cdt.core.index.IIndexFileSet#invert() */ + @Override public IIndexFileSet invert() { if (fInverse == null) { fInverse= new IIndexFileSet() { + @Override public IIndexFileSet invert() { return IndexFileSet.this; } + @Override public IBinding[] filterFileLocalBindings(IBinding[] bindings) { return IndexFileSet.this.filterFileLocalBindings(bindings, true); } + @Override public boolean containsDeclaration(IIndexBinding binding) { - return IndexFileSet.this.containsDeclaration(binding, true); + throw new UnsupportedOperationException(); + } + @Override + public boolean containsNonLocalDeclaration(IBinding binding, IIndexFragment ignore) { + throw new UnsupportedOperationException(); } + @Override public boolean contains(IIndexFile file) throws CoreException { return IndexFileSet.this.contains(file, true); } + @Override public void add(IIndexFile indexFile) { Assert.isLegal(false); } + @Override public void remove(IIndexFile indexFile) { Assert.isLegal(false); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java index decb09a25c5..4c9bf0ef0e5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2011 QNX Software Systems and others. + * Copyright (c) 2005, 2012 QNX Software Systems and others. * 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 @@ -532,7 +532,7 @@ public class PDOM extends PlatformObject implements IPDOM { if (binding != null) { PDOMLinkage linkage= adaptLinkage(name.getLinkage()); if (linkage != null) { - return findBindingInLinkage(linkage, binding); + return findBindingInLinkage(linkage, binding, true); } } else if (name.getPropertyInParent() == IASTPreprocessorStatement.MACRO_NAME) { PDOMLinkage linkage= adaptLinkage(name.getLinkage()); @@ -993,6 +993,10 @@ public class PDOM extends PlatformObject implements IPDOM { @Override public IIndexFragmentBinding adaptBinding(IBinding binding) throws CoreException { + return adaptBinding(binding, true); + } + + private IIndexFragmentBinding adaptBinding(IBinding binding, boolean includeLocal) throws CoreException { if (binding == null) { return null; } @@ -1003,16 +1007,16 @@ public class PDOM extends PlatformObject implements IPDOM { PDOMLinkage linkage= adaptLinkage(binding.getLinkage()); if (linkage != null) { - return findBindingInLinkage(linkage, binding); + return findBindingInLinkage(linkage, binding, includeLocal); } return null; } - private IIndexFragmentBinding findBindingInLinkage(PDOMLinkage linkage, IBinding binding) throws CoreException { + private IIndexFragmentBinding findBindingInLinkage(PDOMLinkage linkage, IBinding binding, boolean includeLocal) throws CoreException { if (binding instanceof IMacroBinding || binding instanceof IIndexMacroContainer) { return linkage.findMacroContainer(binding.getNameCharArray()); } - return linkage.adaptBinding(binding); + return linkage.adaptBinding(binding, includeLocal); } public IIndexFragmentBinding findBinding(IIndexFragmentName indexName) throws CoreException { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java index 78d13b8b15b..812fbadd984 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2011 QNX Software Systems and others. + * Copyright (c) 2005, 2012 QNX Software Systems and others. * 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 @@ -146,9 +146,11 @@ public abstract class PDOMLinkage extends PDOMNamedNode implements IIndexLinkage getIndex().accept((IBTreeVisitor) visitor); } else { getIndex().accept(new IBTreeVisitor() { + @Override public int compare(long record) throws CoreException { return 0; } + @Override public boolean visit(long record) throws CoreException { PDOMNode node= getNode(record); if (node != null) { @@ -217,7 +219,11 @@ public abstract class PDOMLinkage extends PDOMNamedNode implements IIndexLinkage return (PDOMBinding) fPDOM.getCachedResult(binding); } - public abstract PDOMBinding adaptBinding(IBinding binding) throws CoreException; + public final PDOMBinding adaptBinding(IBinding binding) throws CoreException { + return adaptBinding(binding, true); + } + + public abstract PDOMBinding adaptBinding(IBinding binding, boolean includeLocal) throws CoreException; public abstract PDOMBinding addBinding(IASTName name) throws CoreException; @@ -256,7 +262,7 @@ public abstract class PDOMLinkage extends PDOMNamedNode implements IIndexLinkage } if (checkIfInSourceOnly) { - IASTNode node= ASTInternal.getDeclaredInSourceFileOnly(binding, requireDefinition, glob); + IASTNode node= ASTInternal.getDeclaredInSourceFileOnly(getPDOM(), binding, requireDefinition, glob); if (node != null) { return wpdom.getFileForASTNode(getLinkageID(), node); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java index 2a8e142b953..5bc96bd2275 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2010 QNX Software Systems and others. + * Copyright (c) 2006, 2012 QNX Software Systems and others. * 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 @@ -62,10 +62,12 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants { return LINKAGE; } + @Override public String getLinkageName() { return C_LINKAGE_NAME; } + @Override public int getLinkageID() { return C_LINKAGE_ID; } @@ -226,8 +228,8 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants { } @Override - public final PDOMBinding adaptBinding(final IBinding inputBinding) throws CoreException { - return adaptBinding(null, inputBinding, FILE_LOCAL_REC_DUMMY); + public final PDOMBinding adaptBinding(final IBinding inputBinding, boolean includeLocal) throws CoreException { + return adaptBinding(null, inputBinding, includeLocal ? FILE_LOCAL_REC_DUMMY : null); } private final PDOMBinding adaptBinding(final PDOMNode parent, IBinding inputBinding, long[] localToFileHolder) throws CoreException { @@ -264,6 +266,9 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants { final int[] bindingTypes = new int[] {getBindingType(binding)}; final char[] nameChars = binding.getNameCharArray(); PDOMBinding nonLocal= FindBinding.findBinding(getIndex(), this, nameChars, bindingTypes, 0); + if (localToFileHolder == null) + return nonLocal; + long localToFileRec= getLocalToFileRec(parent, binding, nonLocal); if (localToFileRec == 0) return nonLocal; @@ -274,6 +279,9 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants { final int[] bindingTypes = new int[] {getBindingType(binding)}; final char[] nameChars = binding.getNameCharArray(); PDOMBinding nonLocal= FindBinding.findBinding(parent, this, nameChars, bindingTypes, 0); + if (localToFileHolder == null) + return nonLocal; + long localToFileRec= getLocalToFileRec(parent, binding, nonLocal); if (localToFileRec == 0) return nonLocal; 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 fb1c617cbcf..4f93fd5141c 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2011 QNX Software Systems and others. + * Copyright (c) 2005, 2012 QNX Software Systems and others. * 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 @@ -609,8 +609,8 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { } @Override - public final PDOMBinding adaptBinding(final IBinding inputBinding) throws CoreException { - return adaptBinding(null, inputBinding, FILE_LOCAL_REC_DUMMY); + public final PDOMBinding adaptBinding(final IBinding inputBinding, boolean includeLocal) throws CoreException { + return adaptBinding(null, inputBinding, includeLocal ? FILE_LOCAL_REC_DUMMY : null); } private final PDOMBinding adaptBinding(final PDOMNode parent, IBinding inputBinding, long[] fileLocalRecHolder) throws CoreException { @@ -661,6 +661,8 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { } if (parent == this) { PDOMBinding glob= CPPFindBinding.findBinding(getIndex(), this, binding, 0); + if (fileLocalRecHolder == null) + return glob; final long loc= getLocalToFileRec(parent, binding, glob); if (loc == 0) return glob; @@ -670,6 +672,8 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { if (parent instanceof PDOMCPPNamespace) { final BTree btree = ((PDOMCPPNamespace) parent).getIndex(); PDOMBinding glob= CPPFindBinding.findBinding(btree, this, binding, 0); + if (fileLocalRecHolder == null) + return glob; final long loc= getLocalToFileRec(parent, binding, glob); if (loc == 0) return glob; @@ -993,7 +997,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { file= wpdom.getFileForASTNode(getLinkageID(), node); } } else if (binding instanceof ICPPNamespaceAlias) { - IASTNode node= ASTInternal.getDeclaredInSourceFileOnly(binding, false, glob); + IASTNode node= ASTInternal.getDeclaredInSourceFileOnly(getPDOM(), binding, false, glob); if (node != null) { file= wpdom.getFileForASTNode(getLinkageID(), node); } @@ -1002,7 +1006,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { IBinding owner= binding.getOwner(); if (owner instanceof ICPPNamespace) { if (owner.getNameCharArray().length == 0) { - IASTNode node= ASTInternal.getDeclaredInSourceFileOnly(owner, false, glob); + IASTNode node= ASTInternal.getDeclaredInSourceFileOnly(getPDOM(), owner, false, glob); if (node != null) { file= wpdom.getFileForASTNode(getLinkageID(), node); }