mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
- Bug76407 #checkProjectRefChange should preserve order when setting referenced projects
- Bug252966 unintentional stray semi-colon added to removeNonCustomSettings - Fix all warnings
This commit is contained in:
parent
64781791db
commit
8789d929c1
1 changed files with 35 additions and 29 deletions
|
@ -667,7 +667,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
|
||||||
if(projNames.size() == 0)
|
if(projNames.size() == 0)
|
||||||
return new HashSet<IProject>(0);
|
return new HashSet<IProject>(0);
|
||||||
|
|
||||||
Set<IProject> set = new HashSet<IProject>();
|
Set<IProject> set = new LinkedHashSet<IProject>();
|
||||||
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
|
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
|
||||||
|
|
||||||
for (String sproj : projNames)
|
for (String sproj : projNames)
|
||||||
|
@ -685,17 +685,22 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
|
||||||
Collection<IProject> oldProjSet = oldMap != null ? projSetFromProjNameSet(oldMap.keySet()) : new HashSet<IProject>(0);
|
Collection<IProject> oldProjSet = oldMap != null ? projSetFromProjNameSet(oldMap.keySet()) : new HashSet<IProject>(0);
|
||||||
Collection<IProject> newProjSet = newMap != null ? projSetFromProjNameSet(newMap.keySet()) : new HashSet<IProject>(0);
|
Collection<IProject> newProjSet = newMap != null ? projSetFromProjNameSet(newMap.keySet()) : new HashSet<IProject>(0);
|
||||||
|
|
||||||
Set<IProject> tmp = new HashSet<IProject>(newProjSet);
|
// Referenced projects are set in the CDT RefsTab. These settings override those set in the Platform tab.
|
||||||
newProjSet.removeAll(oldProjSet);
|
if (oldProjSet.size() != newProjSet.size()) {
|
||||||
oldProjSet.removeAll(tmp);
|
des.setReferencedProjects(newProjSet.toArray(new IProject[newProjSet.size()]));
|
||||||
if(oldProjSet.size() != 0 || newProjSet.size() != 0){
|
|
||||||
IProject[] refs = des.getReferencedProjects();
|
|
||||||
Set<IProject> set = new HashSet<IProject>(Arrays.asList(refs));
|
|
||||||
set.removeAll(oldProjSet);
|
|
||||||
set.addAll(newProjSet);
|
|
||||||
des.setReferencedProjects(set.toArray(new IProject[set.size()]));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Iterator<IProject> oldIt = oldProjSet.iterator();
|
||||||
|
Iterator<IProject> newIt = newProjSet.iterator();
|
||||||
|
while (oldIt.hasNext() && newIt.hasNext()) {
|
||||||
|
IProject oldP = oldIt.next();
|
||||||
|
IProject newP = newIt.next();
|
||||||
|
if (!oldP.equals(newP)) {
|
||||||
|
des.setReferencedProjects(newProjSet.toArray(new IProject[newProjSet.size()]));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1359,8 +1364,9 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
|
||||||
Map<String, CConfigExtensionReference[]> newMap = newSettings.getExtensionMapCopy();
|
Map<String, CConfigExtensionReference[]> newMap = newSettings.getExtensionMapCopy();
|
||||||
Map<String, CConfigExtensionReference[]> oldMap = oldSettings.getExtensionMapCopy();
|
Map<String, CConfigExtensionReference[]> oldMap = oldSettings.getExtensionMapCopy();
|
||||||
|
|
||||||
for(Iterator<Map.Entry<String, CConfigExtensionReference[]>> iter = newMap.entrySet().iterator(); iter.hasNext();){
|
Iterator<Map.Entry<String, CConfigExtensionReference[]>> iter = newMap.entrySet().iterator();
|
||||||
Map.Entry entry = iter.next();
|
while(iter.hasNext()) {
|
||||||
|
Map.Entry<String, CConfigExtensionReference[]> entry = iter.next();
|
||||||
iter.remove();
|
iter.remove();
|
||||||
CConfigExtensionReference[] oldRefs = oldMap.remove(entry.getKey());
|
CConfigExtensionReference[] oldRefs = oldMap.remove(entry.getKey());
|
||||||
if(oldRefs == null){
|
if(oldRefs == null){
|
||||||
|
@ -1368,7 +1374,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
CConfigExtensionReference[] newRefs = (CConfigExtensionReference[])entry.getValue();
|
CConfigExtensionReference[] newRefs = entry.getValue();
|
||||||
if(newRefs.length != oldRefs.length){
|
if(newRefs.length != oldRefs.length){
|
||||||
flags |= ICDescriptionDelta.EXT_REF;
|
flags |= ICDescriptionDelta.EXT_REF;
|
||||||
break;
|
break;
|
||||||
|
@ -1554,11 +1560,10 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
|
||||||
flags = ICDescriptionDelta.CFG_REF_ADDED;
|
flags = ICDescriptionDelta.CFG_REF_ADDED;
|
||||||
} else {
|
} else {
|
||||||
boolean stop = false;
|
boolean stop = false;
|
||||||
for(Iterator iter = newMap.entrySet().iterator(); iter.hasNext();){
|
for (Map.Entry<String, String> newEntry : newMap.entrySet()) {
|
||||||
Map.Entry newEntry = (Map.Entry)iter.next();
|
String newProj = newEntry.getKey();
|
||||||
Object newProj = newEntry.getKey();
|
String newCfg = newEntry.getValue();
|
||||||
Object newCfg = newEntry.getValue();
|
String oldCfg = oldMap.remove(newProj);
|
||||||
Object oldCfg = oldMap.remove(newProj);
|
|
||||||
if(!newCfg.equals(oldCfg)){
|
if(!newCfg.equals(oldCfg)){
|
||||||
flags |= ICDescriptionDelta.CFG_REF_ADDED;
|
flags |= ICDescriptionDelta.CFG_REF_ADDED;
|
||||||
if(oldCfg != null){
|
if(oldCfg != null){
|
||||||
|
@ -1942,6 +1947,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
|
||||||
generateCElementDeltasFromResourceDelta(cProject, child, list);
|
generateCElementDeltasFromResourceDelta(cProject, child, list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
case ICDescriptionDelta.ADDED:
|
case ICDescriptionDelta.ADDED:
|
||||||
case ICDescriptionDelta.REMOVED:
|
case ICDescriptionDelta.REMOVED:
|
||||||
break;
|
break;
|
||||||
|
@ -2478,7 +2484,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
|
||||||
CResourceData parentRcData = null;
|
CResourceData parentRcData = null;
|
||||||
for(parent = child.getParentContainer();
|
for(parent = child.getParentContainer();
|
||||||
(parentRcData = (CResourceData)parent.getValue()).getType() != ICSettingBase.SETTING_FOLDER;
|
(parentRcData = (CResourceData)parent.getValue()).getType() != ICSettingBase.SETTING_FOLDER;
|
||||||
parent = parent.getParentContainer());
|
parent = parent.getParentContainer()) {
|
||||||
if(!settingsCustomized(project, (CFolderData)parentRcData, (CFolderData)childRcData)){
|
if(!settingsCustomized(project, (CFolderData)parentRcData, (CFolderData)childRcData)){
|
||||||
try {
|
try {
|
||||||
data.removeResourceData(childRcData);
|
data.removeResourceData(childRcData);
|
||||||
|
@ -2488,6 +2494,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
|
||||||
CCorePlugin.log(e);
|
CCorePlugin.log(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
parent = child.getParentContainer();
|
parent = child.getParentContainer();
|
||||||
if(!settingsCustomized(project, (CResourceData)parent.getValue(), (CFileData)childRcData)){
|
if(!settingsCustomized(project, (CResourceData)parent.getValue(), (CFileData)childRcData)){
|
||||||
|
@ -2519,13 +2526,12 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
|
||||||
HashMap<HashSet<String>, CLanguageData> parentMap = createExtSetToLDataMap(project, parentLDatas);
|
HashMap<HashSet<String>, CLanguageData> parentMap = createExtSetToLDataMap(project, parentLDatas);
|
||||||
HashMap<HashSet<String>, CLanguageData> childMap = createExtSetToLDataMap(project, childLDatas);
|
HashMap<HashSet<String>, CLanguageData> childMap = createExtSetToLDataMap(project, childLDatas);
|
||||||
CLanguageData parentLData, childLData;
|
CLanguageData parentLData, childLData;
|
||||||
for(Iterator iter = parentMap.entrySet().iterator(); iter.hasNext();){
|
for (Map.Entry<HashSet<String>, CLanguageData> entry : parentMap.entrySet()) {
|
||||||
Map.Entry entry = (Map.Entry)iter.next();
|
|
||||||
childLData = childMap.get(entry.getKey());
|
childLData = childMap.get(entry.getKey());
|
||||||
if(childLData == null)
|
if(childLData == null)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
parentLData = (CLanguageData)entry.getValue();
|
parentLData = entry.getValue();
|
||||||
if(!langDatasEqual(parentLData, childLData))
|
if(!langDatasEqual(parentLData, childLData))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue