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() {
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())

View File

@ -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 [#, #]" }"##
);
}