diff --git a/cranelift/reader/src/isaspec.rs b/cranelift/reader/src/isaspec.rs index be05f35118..6c1058c599 100644 --- a/cranelift/reader/src/isaspec.rs +++ b/cranelift/reader/src/isaspec.rs @@ -46,6 +46,16 @@ pub enum ParseOptionError { /// Name of the unknown flag. name: String, }, + + /// An unknown value was used, with the given name at the given location. + UnknownValue { + /// Location where the flag was given. + loc: Location, + /// Name of the unknown value. + name: String, + /// Value of the unknown value. + value: String, + }, } impl From for ParseError { @@ -57,6 +67,11 @@ impl From for ParseError { message: format!("unknown setting '{}'", name), is_warning: false, }, + ParseOptionError::UnknownValue { loc, name, value } => Self { + location: loc, + message: format!("unknown setting '{}={}'", name, value), + is_warning: false, + }, } } } @@ -92,7 +107,11 @@ where TestOption::Value(name, value) => match config.set(name, value) { Ok(_) => {} Err(SetError::BadName(name)) => { - return Err(ParseOptionError::UnknownFlag { loc, name }) + return Err(ParseOptionError::UnknownValue { + loc, + name, + value: value.to_string(), + }) } Err(SetError::BadType) => { return option_err!(loc, "invalid setting type: '{}'", opt) diff --git a/cranelift/src/utils.rs b/cranelift/src/utils.rs index 965b72cfdd..5ba65f5bac 100644 --- a/cranelift/src/utils.rs +++ b/cranelift/src/utils.rs @@ -64,6 +64,9 @@ pub fn parse_sets_and_triple( Err(ParseOptionError::UnknownFlag { name, .. }) => { unknown_settings.push(name); } + Err(ParseOptionError::UnknownValue { name, value, .. }) => { + unknown_settings.push(format!("{}={}", name, value)); + } Err(ParseOptionError::Generic(err)) => return Err(err.into()), Ok(()) => {} }