From 6cd7372e2693e17ed7f1a2f9af257b21424fa454 Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Sat, 6 Jan 2018 21:26:27 +0200 Subject: Comparing objects of different type prints a warning. Closes #2870. --- mesonbuild/interpreterbase.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'mesonbuild') diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py index 35ca5c8..6618dc8 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): -- cgit v1.1