diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py index 082515c45a52..5c8390029274 100644 --- a/mesonbuild/interpreterbase.py +++ b/mesonbuild/interpreterbase.py @@ -500,6 +500,8 @@ def evaluate_dictstatement(self, cur): def evaluate_notstatement(self, cur): v = self.evaluate_statement(cur.value) + if is_disabler(v): + return v if not isinstance(v, bool): raise InterpreterException('Argument to "not" is not a boolean.') return not v diff --git a/test cases/common/163 disabler/meson.build b/test cases/common/163 disabler/meson.build index 5eb24ba11c7f..8da2a0bd1487 100644 --- a/test cases/common/163 disabler/meson.build +++ b/test cases/common/163 disabler/meson.build @@ -76,3 +76,25 @@ else has_not_changed = true endif assert(has_not_changed, 'App has changed.') + +if_is_disabled = true +if disabler() + if_is_disabled = false +else + if_is_disabled = false +endif +assert(if_is_disabled, 'Disabler in "if condition" must skip both blocks') + +if not disabler() + if_is_disabled = false +else + if_is_disabled = false +endif +assert(if_is_disabled, 'Disabler in "if not condition" must skip both blocks') + +if disabler() == 1 + if_is_disabled = false +else + if_is_disabled = false +endif +assert(if_is_disabled, 'Disabler in "if a==b" must skip both blocks')