From 41f21a7b5d6bdd0e2cd693467c69c518f2419d46 Mon Sep 17 00:00:00 2001 From: Nick Liu Date: Thu, 29 Dec 2022 21:39:38 +0800 Subject: [PATCH] add arg_name in duplicate argument error msg --- parser/src/error.rs | 6 +++--- parser/src/function.rs | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/parser/src/error.rs b/parser/src/error.rs index b9d7cbf..4f7b101 100644 --- a/parser/src/error.rs +++ b/parser/src/error.rs @@ -21,7 +21,7 @@ pub enum LexicalErrorType { TabError, TabsAfterSpaces, DefaultArgumentError, - DuplicateArgumentError, + DuplicateArgumentError(String), PositionalArgumentError, UnpackedArgumentError, DuplicateKeywordArgumentError, @@ -51,8 +51,8 @@ impl fmt::Display for LexicalErrorType { LexicalErrorType::DefaultArgumentError => { write!(f, "non-default argument follows default argument") } - LexicalErrorType::DuplicateArgumentError => { - write!(f, "duplicate argument in function definition") + LexicalErrorType::DuplicateArgumentError(arg_name) => { + write!(f, "duplicate argument '{arg_name}' in function definition") } LexicalErrorType::DuplicateKeywordArgumentError => { write!(f, "keyword argument repeated") diff --git a/parser/src/function.rs b/parser/src/function.rs index adbb269..91f967d 100644 --- a/parser/src/function.rs +++ b/parser/src/function.rs @@ -31,16 +31,16 @@ pub fn validate_arguments( let mut all_arg_names = FxHashSet::with_hasher(Default::default()); for arg in all_args { - let arg_name = arg.node.arg.clone(); + let arg_name = &arg.node.arg; if !all_arg_names.insert(arg_name) { return Err(LexicalError { - error: LexicalErrorType::DuplicateArgumentError, + error: LexicalErrorType::DuplicateArgumentError(arg_name.to_string()), location: arg.location, }); } } - return Ok(arguments); + Ok(arguments) } pub fn parse_params(