From d3dcd92d8f41e7ead0fc1e0388ffc4cf74f1906b Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Wed, 31 May 2017 12:18:18 -0400 Subject: [PATCH] Bug 517581 Keep env var operation on merged vars the same. If we are merging two env vars and the operations are both append or prepend, keep that as the operation instead of replace. Change-Id: I758a54b8903eabafac38bf2f3f7d7065c0373e70 --- .../envvar/EnvVarOperationProcessor.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) 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..11729bd3ead 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 @@ -51,16 +51,20 @@ public class EnvVarOperationProcessor { case IEnvironmentVariable.ENVVAR_APPEND:{ String delimiter = added.getDelimiter(); return new EnvironmentVariable(name, - performAppend(initial.getValue(),added.getValue(),delimiter), -// IEnvironmentVariable.ENVVAR_APPEND, - delimiter); + performAppend(initial.getValue(), added.getValue(), delimiter), + initial.getOperation() == IEnvironmentVariable.ENVVAR_APPEND + ? IEnvironmentVariable.ENVVAR_APPEND + : IEnvironmentVariable.ENVVAR_REPLACE, + delimiter); } case IEnvironmentVariable.ENVVAR_PREPEND:{ String delimiter = added.getDelimiter(); return new EnvironmentVariable(name, - performPrepend(initial.getValue(),added.getValue(),delimiter), -// IEnvironmentVariable.ENVVAR_PREPEND, - delimiter); + performPrepend(initial.getValue(), added.getValue(), delimiter), + initial.getOperation() == IEnvironmentVariable.ENVVAR_PREPEND + ? IEnvironmentVariable.ENVVAR_PREPEND + : IEnvironmentVariable.ENVVAR_REPLACE, + delimiter); } case IEnvironmentVariable.ENVVAR_REPLACE: default: @@ -155,7 +159,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 +186,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();