diff options
| -rw-r--r-- | mesonbuild/interpreterbase/interpreterbase.py | 2 | ||||
| -rw-r--r-- | test cases/common/158 disabler/meson.build | 5 | ||||
| -rw-r--r-- | test cases/common/158 disabler/subprojects/bar/meson.build | 2 |
3 files changed, 8 insertions, 1 deletions
diff --git a/mesonbuild/interpreterbase/interpreterbase.py b/mesonbuild/interpreterbase/interpreterbase.py index 5849e9ca9..b408b4b12 100644 --- a/mesonbuild/interpreterbase/interpreterbase.py +++ b/mesonbuild/interpreterbase/interpreterbase.py @@ -542,7 +542,7 @@ class InterpreterBase: method_name = node.name.value (h_args, h_kwargs) = self.reduce_arguments(node.args) (args, kwargs) = self._unholder_args(h_args, h_kwargs) - if is_disabled(args, kwargs): + if is_disabled(args, kwargs) and method_name != 'get_variable': return Disabler() if not isinstance(obj, InterpreterObject): raise InvalidArguments(f'{object_display_name} is not callable.') diff --git a/test cases/common/158 disabler/meson.build b/test cases/common/158 disabler/meson.build index 65ca5fdf5..3ee26dfc9 100644 --- a/test cases/common/158 disabler/meson.build +++ b/test cases/common/158 disabler/meson.build @@ -151,3 +151,8 @@ foreach k, i : {'a': true, 'b': disabler(), 'c': true} endforeach assert(loops == 3, 'Disabler in foreach dict') assert(disablers == 1, 'Disabler in foreach dict') + +# https://github.com/mesonbuild/meson/issues/13717 +bar_subproject = subproject('bar') +bar_dep = bar_subproject.get_variable('bar_dep', disabler()) +assert(not is_disabler(bar_dep)) diff --git a/test cases/common/158 disabler/subprojects/bar/meson.build b/test cases/common/158 disabler/subprojects/bar/meson.build new file mode 100644 index 000000000..deed3ce57 --- /dev/null +++ b/test cases/common/158 disabler/subprojects/bar/meson.build @@ -0,0 +1,2 @@ +project('bar') +bar_dep = declare_dependency() |
