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
This commit is contained in:
parent
b6804bf49c
commit
867963f131
|
@ -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,3 @@
|
|||
int main(void) {
|
||||
return 0;
|
||||
}
|
|
@ -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…
Reference in New Issue