From c451af91745250f27a45bd3425572f0cfb6b7a28 Mon Sep 17 00:00:00 2001 From: Mikhail Sennikovsky Date: Fri, 16 Nov 2007 15:30:30 +0000 Subject: [PATCH] fix for the tool-chain modification functionality --- .../tcmodification/ConfigurationModification.java | 4 ++-- .../internal/tcmodification/FileInfoModification.java | 2 +- .../tcmodification/FolderInfoModification.java | 10 +++++----- .../internal/tcmodification/PerTypeSetStorage.java | 4 ++-- .../internal/tcmodification/TcModificationUtil.java | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/ConfigurationModification.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/ConfigurationModification.java index 5377e097a40..0db584d09c9 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/ConfigurationModification.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/ConfigurationModification.java @@ -192,9 +192,9 @@ public class ConfigurationModification extends FolderInfoModification implements clearToolCompatibilityInfo(); } - public void setToolChain(IToolChain tc) { + public void setToolChain(IToolChain tc, boolean force) { setBuilder(tc.getBuilder()); - super.setToolChain(tc); + super.setToolChain(tc, force); } public void changeProjectTools(ITool removeTool, ITool addTool) { diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/FileInfoModification.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/FileInfoModification.java index cbdaccd987e..16a928588b1 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/FileInfoModification.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/FileInfoModification.java @@ -108,7 +108,7 @@ public class FileInfoModification extends } } - if(add) + if(add && tool != null) changeProjectTools(null, tool); } } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/FolderInfoModification.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/FolderInfoModification.java index 105e8e122c7..39cc95a1539 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/FolderInfoModification.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/FolderInfoModification.java @@ -194,7 +194,7 @@ public class FolderInfoModification extends ToolListModification implements IFol return fSelectedToolChain; } - public void setToolChain(IToolChain tc){ + public final void setToolChain(IToolChain tc){ setToolChain(tc, false); } @@ -389,10 +389,6 @@ public class FolderInfoModification extends ToolListModification implements IFol newTools[i] = (Tool)ManagedBuildManager.getRealTool(newTools[i]); } - for(int i = 0; i < newTools.length; i++){ - TcModificationUtil.addPaths(toolMap, newTools[i], tcApplicability.fFolderInfoPaths); - } - for(Iterator iter = tcApplicability.fToolPathMap.entrySet().iterator(); iter.hasNext(); ){ Map.Entry entry = (Map.Entry)iter.next(); Tool tool = (Tool)entry.getKey(); @@ -401,6 +397,10 @@ public class FolderInfoModification extends ToolListModification implements IFol TcModificationUtil.removePaths(toolMap, tool, pathSet); } + for(int i = 0; i < newTools.length; i++){ + TcModificationUtil.addPaths(toolMap, newTools[i], tcApplicability.fFolderInfoPaths); + } + if(tcApplicability.fFileInfoPaths.size() != 0){ FolderInfo foInfo = (FolderInfo)getResourceInfo(); IManagedProject mProj = foInfo.getParent().getManagedProject(); diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/PerTypeSetStorage.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/PerTypeSetStorage.java index 86c57f5b48e..a88aaf15e98 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/PerTypeSetStorage.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/PerTypeSetStorage.java @@ -37,9 +37,9 @@ public class PerTypeSetStorage implements Cloneable { clone.fStorage = (ObjectTypeBasedStorage)fStorage.clone(); int types[] = ObjectTypeBasedStorage.getSupportedObjectTypes(); for(int i = 0; i < types.length; i++){ - Object o = clone.fStorage.get(i); + Object o = clone.fStorage.get(types[i]); if(o != null){ - clone.fStorage.set(i, createSet((Set)o)); + clone.fStorage.set(types[i], createSet((Set)o)); } } return clone; diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/TcModificationUtil.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/TcModificationUtil.java index ec93d908742..d5d6d2638e6 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/TcModificationUtil.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/tcmodification/TcModificationUtil.java @@ -201,7 +201,7 @@ public class TcModificationUtil { PerTypeSetStorage initStorage = (PerTypeSetStorage)initialMap.remove(oPath); PerTypeSetStorage storage; - if(initStorage == null && initStorage.isEmpty(true)){ + if(initStorage == null || initStorage.isEmpty(true)){ if(resStorage != null && !resStorage.isEmpty(true)){ storage = (PerTypeSetStorage)resStorage.clone(); } else {