diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2025-02-28 09:31:00 -0800 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-03-03 11:26:23 -0800 |
| commit | 2ed0d5ed3bda03283fac5780794f43967e691749 (patch) | |
| tree | 813c5d4c6c9228396be4116c1a5a46bfc7f81100 /mesonbuild | |
| parent | d16d5397e57919b50513bab13519fdbba7815c63 (diff) | |
| download | meson-2ed0d5ed3bda03283fac5780794f43967e691749.tar.gz | |
options: use an OptionKey for `get_default_for_b_option`
We have the OptionKey in the one caller that exists already, and this
allows us to do a hash lookup instead of a linear walk.
Diffstat (limited to 'mesonbuild')
| -rw-r--r-- | mesonbuild/interpreter/interpreter.py | 2 | ||||
| -rw-r--r-- | mesonbuild/options.py | 12 |
2 files changed, 7 insertions, 7 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index b0bda8556..c8c05f0bd 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -1087,7 +1087,7 @@ class Interpreter(InterpreterBase, HoldableObject): if self.coredata.optstore.is_base_option(optkey): # Due to backwards compatibility return the default # option for base options instead of erroring out. - return self.coredata.optstore.get_default_for_b_option(optname) + return self.coredata.optstore.get_default_for_b_option(optkey) else: if self.subproject: raise MesonException(f'Option {optname} does not exist for subproject {self.subproject}.') diff --git a/mesonbuild/options.py b/mesonbuild/options.py index 25e2a9f43..ab4fcbe0c 100644 --- a/mesonbuild/options.py +++ b/mesonbuild/options.py @@ -1140,13 +1140,13 @@ class OptionStore: (value_object, value) = self.get_value_object_and_value_for(key) return (value_object, value) - def get_default_for_b_option(self, keyname: str) -> ElementaryOptionValues: - assert keyname.startswith('b_') + def get_default_for_b_option(self, key: OptionKey) -> ElementaryOptionValues: + assert self.is_base_option(key) from .compilers.compilers import BASE_OPTIONS - for bkey, bvalue in BASE_OPTIONS.items(): - if bkey.name == keyname: - return T.cast('ElementaryOptionValues', bvalue.default) - raise MesonBugException(f'Requested base option {keyname} which does not exist.') + try: + return T.cast('ElementaryOptionValues', BASE_OPTIONS[key.evolve(subproject=None)].default) + except KeyError: + raise MesonBugException(f'Requested base option {key} which does not exist.') def remove(self, key: OptionKey) -> None: del self.options[key] |
