From 1eab075c8e74f24260f0e1d8c1c1fa4f74343a21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1igo=20Mart=C3=ADnez?= Date: Tue, 19 Dec 2017 21:30:55 +0100 Subject: [PATCH] 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. --- mesonbuild/coredata.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index bc903cf9a..d4a91a7b0 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -13,6 +13,7 @@ # 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: