summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Ericson <git@JohnEricson.me>2018-12-17 01:08:34 -0500
committerJussi Pakkanen <jpakkane@gmail.com>2018-12-18 20:40:24 +0200
commit4ffd009fe930a4996aff22ce23c0fd5dea11ba8b (patch)
treef00a577754eb839ea272e43eede7f9f61bdfef8a
parentf7d2e7c5d5dd5d434006105af20a6780af90cb77 (diff)
downloadmeson-4ffd009fe930a4996aff22ce23c0fd5dea11ba8b.tar.gz
Factor out iterator over options dictionaries
Otherwise it's easy to forget one. In fact we did forget one: `backend_options` in `validate_option_value`.
-rw-r--r--mesonbuild/coredata.py29
1 files changed, 15 insertions, 14 deletions
diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py
index 65a6a1f4d..16b9d4235 100644
--- a/mesonbuild/coredata.py
+++ b/mesonbuild/coredata.py
@@ -15,6 +15,7 @@
from . import mlog
import pickle, os, uuid, shlex
import sys
+from itertools import chain
from pathlib import PurePath
from collections import OrderedDict
from .mesonlib import (
@@ -476,8 +477,14 @@ class CoreData:
mode = 'custom'
self.builtins['buildtype'].set_value(mode)
+ def _get_all_nonbuiltin_options(self):
+ yield self.backend_options
+ yield self.user_options
+ yield self.compiler_options
+ yield self.base_options
+
def validate_option_value(self, option_name, override_value):
- for opts in (self.builtins, self.base_options, self.compiler_options, self.user_options):
+ for opts in chain(iter([self.builtins]), self._get_all_nonbuiltin_options()):
if option_name in opts:
opt = opts[option_name]
return opt.validate_value(override_value)
@@ -517,20 +524,14 @@ class CoreData:
pass
elif k in self.builtins:
self.set_builtin_option(k, v)
- elif k in self.backend_options:
- tgt = self.backend_options[k]
- tgt.set_value(v)
- elif k in self.user_options:
- tgt = self.user_options[k]
- tgt.set_value(v)
- elif k in self.compiler_options:
- tgt = self.compiler_options[k]
- tgt.set_value(v)
- elif k in self.base_options:
- tgt = self.base_options[k]
- tgt.set_value(v)
else:
- unknown_options.append(k)
+ for opts in self._get_all_nonbuiltin_options():
+ if k in opts:
+ tgt = opts[k]
+ tgt.set_value(v)
+ break
+ else:
+ unknown_options.append(k)
if unknown_options:
unknown_options = ', '.join(sorted(unknown_options))