diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index 02b62a512ff..c3f37671f50 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,6 @@ +2004-06-07 Hoda Amer + Fix for PR 65369 : [CModel] Duplicate namespace declarations in views when namespace defined twice in a file + 2004-06-07 Alain Magloire Fix for PR 65524 diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java index 1215a5150a1..51a09e1e67d 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java @@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.model; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import org.eclipse.cdt.core.CCorePlugin; @@ -435,17 +436,37 @@ public class CModelBuilder { String nsName = (nsDef.getName() == null ) ? "" //$NON-NLS-1$ : nsDef.getName().toString(); - Namespace element = new Namespace (parent, nsName ); - // add to parent - parent.addChild(element); - element.setIdPos(nsDef.getNameOffset(), - (nsName.length() == 0) ? type.length() : (nsDef.getNameEndOffset() - nsDef.getNameOffset())); - element.setPos(nsDef.getStartingOffset(), nsDef.getEndingOffset() - nsDef.getStartingOffset()); - element.setLines( nsDef.getStartingLine(), nsDef.getEndingLine() ); - element.setTypeName(type); + + // check if there is another namespace with the same name for the same parent + boolean alreadyThere = false; + Namespace oldElement = null; - this.newElements.put(element, element.getElementInfo()); - return element; + List siblings = parent.getChildrenOfType(ICElement.C_NAMESPACE); + if(siblings.size() > 0){ + Iterator i = siblings.iterator(); + while (i.hasNext()){ + Namespace n = (Namespace)i.next(); + if(n.getElementName().equals(nsName)){ + alreadyThere = true; + oldElement = n; + } + } + } + if( (alreadyThere) && (oldElement != null)) { + return oldElement; + } else { + // this is the first namespace + Namespace element = new Namespace (parent, nsName ); + // add to parent + parent.addChild(element); + element.setIdPos(nsDef.getNameOffset(), + (nsName.length() == 0) ? type.length() : (nsDef.getNameEndOffset() - nsDef.getNameOffset())); + element.setPos(nsDef.getStartingOffset(), nsDef.getEndingOffset() - nsDef.getStartingOffset()); + element.setLines( nsDef.getStartingLine(), nsDef.getEndingLine() ); + element.setTypeName(type); + this.newElements.put(element, element.getElementInfo()); + return element; + } } private Enumeration createEnumeration(Parent parent, IASTEnumerationSpecifier enumSpecifier) throws CModelException{ diff --git a/core/org.eclipse.cdt.ui/ChangeLog b/core/org.eclipse.cdt.ui/ChangeLog index cea9829858b..c65451d45a2 100644 --- a/core/org.eclipse.cdt.ui/ChangeLog +++ b/core/org.eclipse.cdt.ui/ChangeLog @@ -1,3 +1,6 @@ +2004-06-07 Hoda Amer + Fix for bug 63395 : [Refactoring] a template class does not refactor its constructor + 2004-06-07 Bogdan Gheorghe Fix for Bug 60772 diff --git a/core/org.eclipse.cdt.ui/refactor/org/eclipse/cdt/internal/corext/refactoring/rename/RenameElementProcessor.java b/core/org.eclipse.cdt.ui/refactor/org/eclipse/cdt/internal/corext/refactoring/rename/RenameElementProcessor.java index 3a4de2a683f..e60448c3802 100644 --- a/core/org.eclipse.cdt.ui/refactor/org/eclipse/cdt/internal/corext/refactoring/rename/RenameElementProcessor.java +++ b/core/org.eclipse.cdt.ui/refactor/org/eclipse/cdt/internal/corext/refactoring/rename/RenameElementProcessor.java @@ -413,12 +413,10 @@ public class RenameElementProcessor extends RenameProcessor implements IReferenc ICSearchConstants.TYPE, ICSearchConstants.DECLARATIONS, false )); } IStructure structure = (IStructure) fCElement; - if(structure.getElementType() == ICElement.C_CLASS){ - orPattern.addPattern(SearchEngine.createSearchPattern( searchPrefix + QUALIFIER + structure.getElementName(), - ICSearchConstants.METHOD, ICSearchConstants.ALL_OCCURRENCES, false )); - orPattern.addPattern(SearchEngine.createSearchPattern( searchPrefix + QUALIFIER + TELTA + structure.getElementName(), - ICSearchConstants.METHOD, ICSearchConstants.ALL_OCCURRENCES, false )); - } + orPattern.addPattern(SearchEngine.createSearchPattern( searchPrefix + QUALIFIER + structure.getElementName(), + ICSearchConstants.METHOD, ICSearchConstants.ALL_OCCURRENCES, false )); + orPattern.addPattern(SearchEngine.createSearchPattern( searchPrefix + QUALIFIER + TELTA + structure.getElementName(), + ICSearchConstants.METHOD, ICSearchConstants.ALL_OCCURRENCES, false )); } else if(fCElement instanceof IMethod){ if(updateReferences){