From 062f9a1ad8266356f1492e0d4b07e7d00b84d26e Mon Sep 17 00:00:00 2001 From: Adam Chalmers Date: Wed, 1 Nov 2023 17:36:19 -0500 Subject: [PATCH] Nicer error messages for unknown tokens --- src/wasm-lib/kcl/src/parser.rs | 14 +++++++------- src/wasm-lib/kcl/src/parser/parser_impl.rs | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/wasm-lib/kcl/src/parser.rs b/src/wasm-lib/kcl/src/parser.rs index 3ffdfaa8b..0a213a1db 100644 --- a/src/wasm-lib/kcl/src/parser.rs +++ b/src/wasm-lib/kcl/src/parser.rs @@ -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::>() - ), - })); + let token_list = self.unknown_tokens.iter().map(|t| t.value.as_str()).collect::>(); + 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()) diff --git a/src/wasm-lib/kcl/src/parser/parser_impl.rs b/src/wasm-lib/kcl/src/parser/parser_impl.rs index cc0d242e2..f98230f31 100644 --- a/src/wasm-lib/kcl/src/parser/parser_impl.rs +++ b/src/wasm-lib/kcl/src/parser/parser_impl.rs @@ -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 [#, #]" }"## ); }