diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2018-01-06 21:26:27 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2018-01-31 21:56:43 +0200 |
commit | acd57cb03da81dcada6283ceb08a562c00f0496f (patch) | |
tree | 6ce89e8454811e9d0b4f9fd74822c0645355f7f4 | |
parent | 86feb843f4c196b366ec317c5212d404df34191e (diff) | |
download | meson-acd57cb03da81dcada6283ceb08a562c00f0496f.tar.gz |
Comparing objects of different type prints a warning. Closes #2870.comparison
-rw-r--r-- | mesonbuild/interpreterbase.py | 12 | ||||
-rw-r--r-- | test cases/common/140 get define/meson.build | 4 |
2 files changed, 9 insertions, 7 deletions
diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py index 9dc6b0f95..254a529fb 100644 --- a/mesonbuild/interpreterbase.py +++ b/mesonbuild/interpreterbase.py @@ -265,6 +265,12 @@ class InterpreterBase: if not isinstance(node.elseblock, mparser.EmptyNode): self.evaluate_codeblock(node.elseblock) + def validate_comparison_types(self, val1, val2): + if type(val1) != type(val2): + mlog.warning('''Trying to compare values of different types ({}, {}). +The result of this is undefined and will become a hard error +in a future Meson release.'''.format(type(val1).__name__, type(val2).__name__)) + def evaluate_comparison(self, node): val1 = self.evaluate_statement(node.left) if is_disabler(val1): @@ -272,15 +278,11 @@ class InterpreterBase: val2 = self.evaluate_statement(node.right) if is_disabler(val2): return val2 + self.validate_comparison_types(val1, val2) if node.ctype == '==': return val1 == val2 elif node.ctype == '!=': return val1 != val2 - elif not isinstance(val1, type(val2)): - raise InterpreterException( - 'Values of different types ({}, {}) cannot be compared using {}.'.format(type(val1).__name__, - type(val2).__name__, - node.ctype)) elif not self.is_elementary_type(val1): raise InterpreterException('{} can only be compared for equality.'.format(node.left.value)) elif not self.is_elementary_type(val2): diff --git a/test cases/common/140 get define/meson.build b/test cases/common/140 get define/meson.build index e23b7dedb..6e8e37643 100644 --- a/test cases/common/140 get define/meson.build +++ b/test cases/common/140 get define/meson.build @@ -45,8 +45,8 @@ foreach lang : ['c', 'cpp'] if meson.is_cross_build() # Can't use an empty array as a fallback here because of # https://github.com/mesonbuild/meson/issues/1481 - lang_args = meson.get_cross_property(lang + '_args', false) - if lang_args != false + lang_args = meson.get_cross_property(lang + '_args', []) + if lang_args.length() != 0 foreach lang_arg : lang_args if lang_arg.contains('MESON_TEST_ISSUE_1665') run_1665_test = true |