Nicer error messages for unknown tokens
This commit is contained in:
@ -36,13 +36,13 @@ impl Parser {
|
||||
|
||||
if !self.unknown_tokens.is_empty() {
|
||||
let source_ranges = self.unknown_tokens.iter().map(SourceRange::from).collect();
|
||||
return Err(KclError::Lexical(KclErrorDetails {
|
||||
source_ranges,
|
||||
message: format!(
|
||||
"found unknown tokens {:?}",
|
||||
self.unknown_tokens.iter().map(|t| t.value.as_str()).collect::<Vec<_>>()
|
||||
),
|
||||
}));
|
||||
let token_list = self.unknown_tokens.iter().map(|t| t.value.as_str()).collect::<Vec<_>>();
|
||||
let message = if token_list.len() == 1 {
|
||||
format!("found unknown token '{}'", token_list[0])
|
||||
} else {
|
||||
format!("found unknown tokens [{}]", token_list.join(", "))
|
||||
};
|
||||
return Err(KclError::Lexical(KclErrorDetails { source_ranges, message }));
|
||||
}
|
||||
|
||||
parser_impl::run_parser(&mut self.tokens.as_slice())
|
||||
|
||||
@ -2216,7 +2216,7 @@ const secondExtrude = startSketchOn('XY')
|
||||
let err = parser.ast().unwrap_err();
|
||||
// TODO: Better errors when program cannot tokenize.
|
||||
// https://github.com/KittyCAD/modeling-app/issues/696
|
||||
assert!(err.to_string().contains("found list of unknown tokens"));
|
||||
assert!(err.to_string().contains("found unknown token"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -2276,7 +2276,7 @@ z(-[["#,
|
||||
// https://github.com/KittyCAD/modeling-app/issues/696
|
||||
assert_eq!(
|
||||
result.err().unwrap().to_string(),
|
||||
r##"lexical: KclErrorDetails { source_ranges: [SourceRange([6, 7])], message: "found list of unknown tokens \"#\"" }"##
|
||||
r##"lexical: KclErrorDetails { source_ranges: [SourceRange([6, 7])], message: "found unknown token '#'" }"##
|
||||
);
|
||||
}
|
||||
|
||||
@ -2290,7 +2290,7 @@ z(-[["#,
|
||||
// https://github.com/KittyCAD/modeling-app/issues/696
|
||||
assert_eq!(
|
||||
result.err().unwrap().to_string(),
|
||||
r##"lexical: KclErrorDetails { source_ranges: [SourceRange([25, 26]), SourceRange([26, 27])], message: "found list of unknown tokens \"# #\"" }"##
|
||||
r##"lexical: KclErrorDetails { source_ranges: [SourceRange([25, 26]), SourceRange([26, 27])], message: "found unknown tokens [#, #]" }"##
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user