summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/interpreterbase/interpreterbase.py2
-rw-r--r--test cases/common/158 disabler/meson.build5
-rw-r--r--test cases/common/158 disabler/subprojects/bar/meson.build2
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()