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`.
pull/4653/head
John Ericson 6 years ago committed by Jussi Pakkanen
parent f7d2e7c5d5
commit 4ffd009fe9
  1. 29
      mesonbuild/coredata.py

@ -15,6 +15,7 @@
from . import mlog from . import mlog
import pickle, os, uuid, shlex import pickle, os, uuid, shlex
import sys import sys
from itertools import chain
from pathlib import PurePath from pathlib import PurePath
from collections import OrderedDict from collections import OrderedDict
from .mesonlib import ( from .mesonlib import (
@ -476,8 +477,14 @@ class CoreData:
mode = 'custom' mode = 'custom'
self.builtins['buildtype'].set_value(mode) 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): 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: if option_name in opts:
opt = opts[option_name] opt = opts[option_name]
return opt.validate_value(override_value) return opt.validate_value(override_value)
@ -517,20 +524,14 @@ class CoreData:
pass pass
elif k in self.builtins: elif k in self.builtins:
self.set_builtin_option(k, v) 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: 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: if unknown_options:
unknown_options = ', '.join(sorted(unknown_options)) unknown_options = ', '.join(sorted(unknown_options))

Loading…
Cancel
Save