Avoid an unnecessary intermediate value in char_lit().
This makes the function more concise and easier to understand.
This commit is contained in:
parent
ea45edf0ee
commit
4c274b6aea
1 changed files with 9 additions and 14 deletions
|
@ -287,26 +287,21 @@ pub fn char_lit(lit: &str) -> (char, isize) {
|
||||||
use std::char;
|
use std::char;
|
||||||
|
|
||||||
let mut chars = lit.chars();
|
let mut chars = lit.chars();
|
||||||
let c = match (chars.next(), chars.next()) {
|
match (chars.next(), chars.next()) {
|
||||||
(Some(c), None) if c != '\\' => return (c, 1),
|
(Some(c), None) if c != '\\' => return (c, 1),
|
||||||
(Some('\\'), Some(c)) => match c {
|
(Some('\\'), Some(c)) => match c {
|
||||||
'"' => Some('"'),
|
'"' => return ('"', 2),
|
||||||
'n' => Some('\n'),
|
'n' => return ('\n', 2),
|
||||||
'r' => Some('\r'),
|
'r' => return ('\r', 2),
|
||||||
't' => Some('\t'),
|
't' => return ('\t', 2),
|
||||||
'\\' => Some('\\'),
|
'\\' => return ('\\', 2),
|
||||||
'\'' => Some('\''),
|
'\'' => return ('\'', 2),
|
||||||
'0' => Some('\0'),
|
'0' => return ('\0', 2),
|
||||||
_ => { None }
|
_ => {}
|
||||||
},
|
},
|
||||||
_ => panic!("lexer accepted invalid char escape `{}`", lit)
|
_ => panic!("lexer accepted invalid char escape `{}`", lit)
|
||||||
};
|
};
|
||||||
|
|
||||||
match c {
|
|
||||||
Some(x) => return (x, 2),
|
|
||||||
None => { }
|
|
||||||
}
|
|
||||||
|
|
||||||
let msg = format!("lexer should have rejected a bad character escape {}", lit);
|
let msg = format!("lexer should have rejected a bad character escape {}", lit);
|
||||||
let msg2 = &msg[..];
|
let msg2 = &msg[..];
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue