From 7ec7b572a973b565b74f02e459906f647065ebab Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Thu, 2 Apr 2020 15:58:07 +1100 Subject: [PATCH] Fix the `-Zsanitizer_memory_track_origins` error message. Currently, if you give a bogus value like `-Zsanitizer-memory-track-origins=99` you get this incorrect error: ``` error: debugging option `sanitizer-memory-track-origins` takes no value ``` This commit fixes it so it gives this instead: ``` error: incorrect value `99` for debugging option `sanitizer-memory-track-origins` - 0, 1, or 2 was expected ``` The commit also makes `parse_sanitizer_memory_track_origins` more readable. --- src/librustc_session/options.rs | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/librustc_session/options.rs b/src/librustc_session/options.rs index 08c623457c23..dea7ffd6bbb6 100644 --- a/src/librustc_session/options.rs +++ b/src/librustc_session/options.rs @@ -259,7 +259,8 @@ macro_rules! options { Some("one of: `address`, `leak`, `memory` or `thread`"); pub const parse_sanitizer_list: Option<&str> = Some("comma separated list of sanitizers"); - pub const parse_sanitizer_memory_track_origins: Option<&str> = None; + pub const parse_sanitizer_memory_track_origins: Option<&str> = + Some("0, 1, or 2"); pub const parse_cfguard: Option<&str> = Some("either `disabled`, `nochecks`, or `checks`"); pub const parse_linker_flavor: Option<&str> = @@ -491,18 +492,11 @@ macro_rules! options { } fn parse_sanitizer_memory_track_origins(slot: &mut usize, v: Option<&str>) -> bool { - match v.map(|s| s.parse()) { - None => { - *slot = 2; - true - } - Some(Ok(i)) if i <= 2 => { - *slot = i; - true - } - _ => { - false - } + match v { + Some("2") | None => { *slot = 2; true } + Some("1") => { *slot = 1; true } + Some("0") => { *slot = 0; true } + Some(_) => false, } }