Skip to content

Commit

Permalink
Auto merge of rust-lang#632 - camelid:better-parse-errors, r=jackh726
Browse files Browse the repository at this point in the history
Format parse errors better

Previously the parser printed parse errors with Debug formatting, even
though Display formatting is implemented and looks much better.

Before:

    ?- load libstd.chalk
    ?- forall<T: Clone> { Vec<T>: Clone }
    error: parse error: UnrecognizedToken { token: (8, Token(17, ":"), 9), expected: ["\",\"", "\">\""] }
    position: `forall<T: Clone> { Vec<T>: Clone }`
                       ^

After:

    ?- load libstd.chalk
    ?- forall<T: Clone> { Vec<T>: Clone }
    error: parse error: Unrecognized token `:` found at 8:9
    Expected one of "," or ">"
    position: `forall<T: Clone> { Vec<T>: Clone }`
                       ^
  • Loading branch information
bors committed Oct 23, 2020
2 parents 420e937 + 613e664 commit a698320
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 13 deletions.
12 changes: 6 additions & 6 deletions chalk-parse/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>;
pub fn parse_program(text: &str) -> Result<ast::Program> {
match parser::ProgramParser::new().parse(text) {
Ok(v) => Ok(v),
Err(e) => Err(format!("parse error: {:?}", e))?,
Err(e) => Err(format!("parse error: {}", e))?,
}
}

pub fn parse_ty(text: &str) -> Result<ast::Ty> {
match parser::TyParser::new().parse(text) {
Ok(v) => Ok(v),
Err(e) => Err(format!("error parsing `{}`: {:?}", text, e))?,
Err(e) => Err(format!("error parsing `{}`: {}", text, e))?,
}
}

Expand All @@ -42,27 +42,27 @@ pub fn parse_goal(text: &str) -> Result<Box<ast::Goal>> {
};
match e {
ParseError::InvalidToken { location } => Err(format!(
"parse error: {:?}\n{}",
"parse error: {}\n{}",
e,
position_string(location, location + 1)
))?,
ParseError::UnrecognizedToken {
token: (start, _, end),
..
} => Err(format!(
"parse error: {:?}\n{}",
"parse error: {}\n{}",
e,
position_string(start, end)
))?,
ParseError::ExtraToken {
token: (start, _, end),
..
} => Err(format!(
"parse error: {:?}\n{}",
"parse error: {}\n{}",
e,
position_string(start, end)
))?,
_ => Err(format!("parse error: {:?}", e))?,
_ => Err(format!("parse error: {}", e))?,
}
}
}
Expand Down
14 changes: 7 additions & 7 deletions tests/lowering/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,7 @@ fn scalars() {
}

error_msg {
"parse error: UnrecognizedToken"
"parse error: Unrecognizedtoken"
}
}
}
Expand All @@ -527,7 +527,7 @@ fn raw_pointers() {
struct *const i32 { }
}
error_msg {
"parse error: UnrecognizedToken"
"parse error: Unrecognizedtoken"
}
}

Expand All @@ -537,7 +537,7 @@ fn raw_pointers() {
impl Foo for *i32 { }
}
error_msg {
"parse error: UnrecognizedToken"
"parse error: Unrecognizedtoken"
}
}
}
Expand All @@ -561,7 +561,7 @@ fn refs() {
}

error_msg {
"parse error: UnrecognizedToken"
"parse error: Unrecognizedtoken"
}
}
}
Expand All @@ -587,7 +587,7 @@ fn slices() {
}

error_msg {
"parse error: UnrecognizedToken"
"parse error: Unrecognizedtoken"
}
}
}
Expand Down Expand Up @@ -635,7 +635,7 @@ fn arrays() {
}

error_msg {
"parse error: UnrecognizedToken"
"parse error: Unrecognizedtoken"
}
}

Expand All @@ -659,7 +659,7 @@ fn arrays() {
}

error_msg {
"parse error: UnrecognizedToken"
"parse error: Unrecognizedtoken"
}
}
}
Expand Down

0 comments on commit a698320

Please sign in to comment.