aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter/interpreter.py
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2022-08-01 23:30:21 -0400
committerEli Schwartz <eschwartz@archlinux.org>2022-08-22 11:46:34 -0400
commite19e9ce6f196f7c127a2668b5df0ada1d50806df (patch)
tree2458b53d4a04501bd2b518fd05a74c6c5b90a11c /mesonbuild/interpreter/interpreter.py
parentd395b1a7682cdc9387b452fd2904d394eb1c0cd2 (diff)
downloadmeson-e19e9ce6f196f7c127a2668b5df0ada1d50806df.zip
meson-e19e9ce6f196f7c127a2668b5df0ada1d50806df.tar.gz
meson-e19e9ce6f196f7c127a2668b5df0ada1d50806df.tar.bz2
interpreter: add a special class to track the lifecycle of get_option() strings
Diffstat (limited to 'mesonbuild/interpreter/interpreter.py')
-rw-r--r--mesonbuild/interpreter/interpreter.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index 9873888..8caf010 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -445,6 +445,7 @@ class Interpreter(InterpreterBase, HoldableObject):
str: P_OBJ.StringHolder,
P_OBJ.MesonVersionString: P_OBJ.MesonVersionStringHolder,
P_OBJ.DependencyVariableString: P_OBJ.DependencyVariableStringHolder,
+ P_OBJ.OptionString: P_OBJ.OptionStringHolder,
# Meson types
mesonlib.File: OBJ.FileHolder,
@@ -1094,6 +1095,8 @@ class Interpreter(InterpreterBase, HoldableObject):
opt.name = optname
return opt
elif isinstance(opt, coredata.UserOption):
+ if isinstance(opt.value, str):
+ return P_OBJ.OptionString(opt.value, f'{{{optname}}}')
return opt.value
return opt
@@ -2845,6 +2848,9 @@ class Interpreter(InterpreterBase, HoldableObject):
ret = os.path.join(*parts).replace('\\', '/')
if isinstance(parts[0], P_OBJ.DependencyVariableString) and '..' not in other:
return P_OBJ.DependencyVariableString(ret)
+ elif isinstance(parts[0], P_OBJ.OptionString):
+ name = os.path.join(parts[0].optname, other)
+ return P_OBJ.OptionString(ret, name)
else:
return ret