diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/EnvVarOperationProcessor.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/EnvVarOperationProcessor.java index 6f458aefcdc..93eec8f7162 100644 --- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/EnvVarOperationProcessor.java +++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/EnvVarOperationProcessor.java @@ -48,20 +48,30 @@ public class EnvVarOperationProcessor { switch(added.getOperation()){ case IEnvironmentVariable.ENVVAR_REMOVE: return new EnvironmentVariable(name,null,IEnvironmentVariable.ENVVAR_REMOVE,null); - case IEnvironmentVariable.ENVVAR_APPEND:{ - String delimiter = added.getDelimiter(); - return new EnvironmentVariable(name, - performAppend(initial.getValue(),added.getValue(),delimiter), -// IEnvironmentVariable.ENVVAR_APPEND, - delimiter); + case IEnvironmentVariable.ENVVAR_APPEND: { + String delimiter = added.getDelimiter(); + String newValue = performAppend(initial.getValue(), added.getValue(), delimiter); + int op; + if (initial.getOperation() == IEnvironmentVariable.ENVVAR_APPEND) { + op = IEnvironmentVariable.ENVVAR_APPEND; + } else { + // TODO should really only replace if initial is replace + op = IEnvironmentVariable.ENVVAR_REPLACE; } - case IEnvironmentVariable.ENVVAR_PREPEND:{ - String delimiter = added.getDelimiter(); - return new EnvironmentVariable(name, - performPrepend(initial.getValue(),added.getValue(),delimiter), -// IEnvironmentVariable.ENVVAR_PREPEND, - delimiter); + return new EnvironmentVariable(name, newValue, op, delimiter); + } + case IEnvironmentVariable.ENVVAR_PREPEND: { + String delimiter = added.getDelimiter(); + String newValue = performPrepend(initial.getValue(), added.getValue(), delimiter); + int op; + if (initial.getOperation() == IEnvironmentVariable.ENVVAR_PREPEND) { + op = IEnvironmentVariable.ENVVAR_PREPEND; + } else { + // TODO should really only replace if initial is replace + op = IEnvironmentVariable.ENVVAR_REPLACE; } + return new EnvironmentVariable(name, newValue, op, delimiter); + } case IEnvironmentVariable.ENVVAR_REPLACE: default: return new EnvironmentVariable(added.getName(),added.getValue(),added.getDelimiter()); @@ -155,7 +165,7 @@ public class EnvVarOperationProcessor { static public List convertToList(String value, String delimiter){ if (value == null) value = ""; //$NON-NLS-1$ - List list = new ArrayList(); + List list = new ArrayList<>(); int delLength = delimiter.length(); int valLength = value.length(); @@ -182,7 +192,7 @@ public class EnvVarOperationProcessor { * removes duplicates */ static public List removeDuplicates(List value, List duplicates){ - List list = new ArrayList(); + List list = new ArrayList<>(); Iterator valueIter = value.iterator(); while(valueIter.hasNext()){ String curVal = valueIter.next();