aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter/interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/interpreter/interpreter.py')
-rw-r--r--mesonbuild/interpreter/interpreter.py22
1 files changed, 10 insertions, 12 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index 5cadf52..07afdce 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -77,6 +77,8 @@ from .type_checking import (
REQUIRED_KW,
NoneType,
in_set_validator,
+ variables_validator,
+ variables_convertor,
env_convertor_with_method
)
from . import primitives as P_OBJ
@@ -633,23 +635,19 @@ class Interpreter(InterpreterBase, HoldableObject):
if dict_new and variables:
FeatureNew.single_use(f'{argname} as dictionary', '0.56.0', self.subproject, location=self.current_node)
else:
- varlist = mesonlib.stringlistify(variables)
+ variables = mesonlib.stringlistify(variables)
if list_new:
FeatureNew.single_use(f'{argname} as list of strings', '0.56.0', self.subproject, location=self.current_node)
- variables = {}
- for v in varlist:
- try:
- (key, value) = v.split('=', 1)
- except ValueError:
- raise InterpreterException(f'Variable {v!r} must have a value separated by equals sign.')
- variables[key.strip()] = value.strip()
+
+ invalid_msg = variables_validator(variables)
+ if invalid_msg is not None:
+ raise InterpreterException(invalid_msg)
+
+ variables = variables_convertor(variables)
for k, v in variables.items():
- if not k or not v:
- raise InterpreterException('Empty variable name or value')
- if any(c.isspace() for c in k):
- raise InterpreterException(f'Invalid whitespace in variable name "{k}"')
if not isinstance(v, str):
raise InterpreterException('variables values must be strings.')
+
return variables
@FeatureNewKwargs('declare_dependency', '0.46.0', ['link_whole'])