Deprecate duplicated values in array options
Duplicated options in array types have been removed by a previous
commit but someone could be using it.
The previous behaviour has been restored but the existence of
duplicates is now tested, and in that case a `DEPRECATION` message
is shown.
# See the License for the specific language governing permissions and
# limitations under the License.
+from . import mlog
import pickle, os, uuid
import sys
from pathlib import PurePath
@@ -147,7 +148,10 @@ class UserArrayOption(UserOption):
if value.startswith('['):
newvalue = ast.literal_eval(value)
else:
- newvalue = [v.strip() for v in OrderedDict.fromkeys(value.split(','))]
+ newvalue = [v.strip() for v in value.split(',')]
+ if len(set(newvalue)) != len(newvalue):
+ mlog.log(mlog.red('DEPRECATION:'), '''Duplicated values in an array type is deprecated.
+This will become a hard error in the future.''')
if not isinstance(newvalue, list):
raise MesonException('"{0}" should be a string array, but it is not'.format(str(newvalue)))
for i in newvalue:
