summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Schubert <contact@benschubert.me>2019-07-18 23:10:00 +0100
committerBenjamin Schubert <contact@benschubert.me>2019-07-18 23:10:00 +0100
commit05ca91a0c7e928d1fd03002d97611b3084559d67 (patch)
tree0a2c2e44eb130300e2763e9e9a03a17c5e9b0299
parent9d2536c7683a800e496853e911e2eccd16ab9ddf (diff)
downloadbuildstream-bschubert/fast-enums.tar.gz
-rw-r--r--src/buildstream/_options/optionpool.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/buildstream/_options/optionpool.py b/src/buildstream/_options/optionpool.py
index 98e8393e6..ca3f52e0f 100644
--- a/src/buildstream/_options/optionpool.py
+++ b/src/buildstream/_options/optionpool.py
@@ -45,6 +45,7 @@ _OPTION_TYPES = {
OptionTypes = enum.Enum("OptionTypes", {key: key for key in _OPTION_TYPES}, type=str)
+
class OptionPool():
def __init__(self, element_path):
@@ -75,8 +76,17 @@ class OptionPool():
# Assert that the option name is a valid symbol
_assert_symbol_name(option_name, "option name", ref_node=option_definition, allow_dashes=False)
- opt_type_name = option_definition.get_enum('type', OptionTypes)
- opt_type = _OPTION_TYPES[opt_type_name.value]
+ # opt_type_name = option_definition.get_enum('type', OptionTypes)
+ # opt_type = _OPTION_TYPES[opt_type_name.value]
+
+ opt_type_name = option_definition.get_str('type')
+
+ try:
+ opt_type = _OPTION_TYPES[opt_type_name]
+ except KeyError:
+ p = option_definition.get_scalar('type').get_provenance()
+ raise LoadError(LoadErrorReason.INVALID_DATA,
+ "{}: Invalid option type '{}'".format(p, opt_type_name))
option = opt_type(option_name, option_definition, self)
self._options[option_name] = option