aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreterbase/_unholder.py
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2021-06-28 17:22:14 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2021-07-02 17:14:44 +0300
commit971a0b1775ef80fc0877b3b90f75803f197c866b (patch)
tree40f206fa6112707dfc0600546c072e104a55c5e1 /mesonbuild/interpreterbase/_unholder.py
parent5bb93490c4c15198bcd230ecf64d3e5c5ef17951 (diff)
downloadmeson-971a0b1775ef80fc0877b3b90f75803f197c866b.zip
meson-971a0b1775ef80fc0877b3b90f75803f197c866b.tar.gz
meson-971a0b1775ef80fc0877b3b90f75803f197c866b.tar.bz2
fix: get_variable default variables are not ObjectHolders (fixes #8936)
Diffstat (limited to 'mesonbuild/interpreterbase/_unholder.py')
-rw-r--r--mesonbuild/interpreterbase/_unholder.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/mesonbuild/interpreterbase/_unholder.py b/mesonbuild/interpreterbase/_unholder.py
index b5663a5..7e95232 100644
--- a/mesonbuild/interpreterbase/_unholder.py
+++ b/mesonbuild/interpreterbase/_unholder.py
@@ -18,7 +18,7 @@ from ..mesonlib import HoldableObject, MesonBugException
import typing as T
-def _unholder(obj: T.Union[TYPE_var, InterpreterObject]) -> TYPE_var:
+def _unholder(obj: T.Union[TYPE_var, InterpreterObject], *, permissive: bool = False) -> TYPE_var:
if isinstance(obj, (int, bool, str)):
return obj
elif isinstance(obj, list):
@@ -30,6 +30,8 @@ def _unholder(obj: T.Union[TYPE_var, InterpreterObject]) -> TYPE_var:
return obj.held_object
elif isinstance(obj, MesonInterpreterObject):
return obj
+ elif isinstance(obj, HoldableObject) and permissive:
+ return obj
elif isinstance(obj, HoldableObject):
raise MesonBugException(f'Argument {obj} of type {type(obj).__name__} is not held by an ObjectHolder.')
elif isinstance(obj, InterpreterObject):