summaryrefslogtreecommitdiff
path: root/buildstream/_options/optionpool.py
diff options
context:
space:
mode:
Diffstat (limited to 'buildstream/_options/optionpool.py')
-rw-r--r--buildstream/_options/optionpool.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/buildstream/_options/optionpool.py b/buildstream/_options/optionpool.py
index 41990ce4a..f38682aec 100644
--- a/buildstream/_options/optionpool.py
+++ b/buildstream/_options/optionpool.py
@@ -233,12 +233,19 @@ class OptionPool():
expression, value = tuples[0]
try:
- if self.evaluate(expression):
- _yaml.composite(node, value)
+ apply_fragment = self.evaluate(expression)
except LoadError as e:
# Prepend the provenance of the error
raise LoadError(e.reason, "{}: {}".format(p, e)) from e
+ if not hasattr(value, 'get'):
+ raise LoadError(LoadErrorReason.ILLEGAL_COMPOSITE,
+ "{}: Only values of type 'dict' can be composed.".format(p))
+
+ # Apply the yaml fragment if its condition evaluates to true
+ if apply_fragment:
+ _yaml.composite(node, value)
+
return True
return False