Compare commits

...

1 Commits

Author SHA1 Message Date
062f9a1ad8 Nicer error messages for unknown tokens 2023-11-01 17:36:39 -05:00
2 changed files with 10 additions and 10 deletions

View File

@ -36,13 +36,13 @@ impl Parser {
if !self.unknown_tokens.is_empty() { if !self.unknown_tokens.is_empty() {
let source_ranges = self.unknown_tokens.iter().map(SourceRange::from).collect(); let source_ranges = self.unknown_tokens.iter().map(SourceRange::from).collect();
return Err(KclError::Lexical(KclErrorDetails { let token_list = self.unknown_tokens.iter().map(|t| t.value.as_str()).collect::<Vec<_>>();
source_ranges, let message = if token_list.len() == 1 {
message: format!( format!("found unknown token '{}'", token_list[0])
"found unknown tokens {:?}", } else {
self.unknown_tokens.iter().map(|t| t.value.as_str()).collect::<Vec<_>>() format!("found unknown tokens [{}]", token_list.join(", "))
), };
})); return Err(KclError::Lexical(KclErrorDetails { source_ranges, message }));
} }
parser_impl::run_parser(&mut self.tokens.as_slice()) parser_impl::run_parser(&mut self.tokens.as_slice())

View File

@ -2216,7 +2216,7 @@ const secondExtrude = startSketchOn('XY')
let err = parser.ast().unwrap_err(); let err = parser.ast().unwrap_err();
// TODO: Better errors when program cannot tokenize. // TODO: Better errors when program cannot tokenize.
// https://github.com/KittyCAD/modeling-app/issues/696 // 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] #[test]
@ -2276,7 +2276,7 @@ z(-[["#,
// https://github.com/KittyCAD/modeling-app/issues/696 // https://github.com/KittyCAD/modeling-app/issues/696
assert_eq!( assert_eq!(
result.err().unwrap().to_string(), 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 // https://github.com/KittyCAD/modeling-app/issues/696
assert_eq!( assert_eq!(
result.err().unwrap().to_string(), 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 [#, #]" }"##
); );
} }