Do not validate options when finding non-matching

This is a) useless because it's only used to print which options are not
default, and b) harmful because it can result in cases where things
break, like in projects that set a standard that the chosen compiler
doesn't support, but the project (or some subset) can be built with a
different standard.

Fixes: #8360
0.57
Dylan Baker 4 years ago committed by Nirbheek Chauhan
parent ef8162feda
commit 21db61beac
  1. 7
      mesonbuild/interpreter.py
  2. 3
      test cases/common/236 invalid standard overriden to valid/main.c
  3. 8
      test cases/common/236 invalid standard overriden to valid/meson.build
  4. 9
      test cases/common/236 invalid standard overriden to valid/test.json

@ -2476,13 +2476,10 @@ class Interpreter(InterpreterBase):
# TODO: Why is this in interpreter.py and not CoreData or Environment?
def get_non_matching_default_options(self) -> T.Iterator[T.Tuple[str, str, coredata.UserOption]]:
env = self.environment
for def_opt_name, def_opt_value in self.project_default_options.items():
cur_opt_value = self.coredata.options.get(def_opt_name)
if cur_opt_value is not None:
def_opt_value = env.coredata.validate_option_value(def_opt_name, def_opt_value)
if def_opt_value != cur_opt_value.value:
yield (str(def_opt_name), def_opt_value, cur_opt_value)
if cur_opt_value is not None and def_opt_value != cur_opt_value.value:
yield (str(def_opt_name), def_opt_value, cur_opt_value)
def build_func_dict(self):
self.funcs.update({'add_global_arguments': self.func_add_global_arguments,

@ -0,0 +1,8 @@
project(
'invalid C standard overriden to valid one',
'c',
default_options : ['c_std=invalid99'],
)
exe = executable('main', 'main.c')
test('main', exe)

@ -0,0 +1,9 @@
{
"matrix": {
"options": {
"c_std": [
{ "val": "c89" }
]
}
}
}
Loading…
Cancel
Save