1
Fork 0

[WIP] Improve error behavior

This commit is contained in:
Yuki Okushi 2019-01-20 04:37:29 +09:00
parent b721c1a885
commit c502a79fa1

View file

@ -1408,9 +1408,10 @@ impl<'a> StringReader<'a> {
// lifetimes shouldn't end with a single quote // lifetimes shouldn't end with a single quote
// if we find one, then this is an invalid character literal // if we find one, then this is an invalid character literal
if self.ch_is('\'') { if self.ch_is('\'') {
self.fatal_span_verbose(start_with_quote, self.next_pos, self.err_span_(start_with_quote, self.next_pos,
String::from("character literal may only contain one codepoint")) "character literal may only contain one codepoint");
.raise(); self.bump();
return Ok(token::Literal(token::Err(Symbol::intern("??")), None))
} }
@ -1445,7 +1446,7 @@ impl<'a> StringReader<'a> {
format!("\"{}\"", &self.src[start..end]), format!("\"{}\"", &self.src[start..end]),
Applicability::MachineApplicable Applicability::MachineApplicable
).emit(); ).emit();
return Ok(token::Literal(token::Char(Symbol::intern("??")), None)) return Ok(token::Literal(token::Err(Symbol::intern("??")), None))
} }
if self.ch_is('\n') || self.is_eof() || self.ch_is('/') { if self.ch_is('\n') || self.is_eof() || self.ch_is('/') {
// Only attempt to infer single line string literals. If we encounter // Only attempt to infer single line string literals. If we encounter
@ -1455,8 +1456,9 @@ impl<'a> StringReader<'a> {
} }
} }
self.fatal_span_verbose(start_with_quote, pos, self.err_span_(start_with_quote, pos,
String::from("character literal may only contain one codepoint")).raise(); "character literal may only contain one codepoint");
self.bump();
} }
let id = if valid { let id = if valid {