From 8bfcc388ed466e6013694a1b222c742e48004f00 Mon Sep 17 00:00:00 2001 From: Feliciss <10203-feliciss@users.noreply.0xacab.org> Date: Tue, 29 Aug 2023 14:55:35 -0600 Subject: [PATCH 1/3] modify errmapgen.rs. --- .../move-errmapgen/src/errmapgen.rs | 59 +++++++++++++++---- 1 file changed, 49 insertions(+), 10 deletions(-) diff --git a/language/move-prover/move-errmapgen/src/errmapgen.rs b/language/move-prover/move-errmapgen/src/errmapgen.rs index 1a9aeb2b6d..6a7cd4d8d9 100644 --- a/language/move-prover/move-errmapgen/src/errmapgen.rs +++ b/language/move-prover/move-errmapgen/src/errmapgen.rs @@ -3,7 +3,6 @@ // SPDX-License-Identifier: Apache-2.0 use anyhow::{bail, Result}; -use move_command_line_common::files::MOVE_ERROR_DESC_EXTENSION; use move_core_types::{ account_address::AccountAddress, errmap::{ErrorDescription, ErrorMapping}, @@ -28,15 +27,54 @@ pub struct ErrmapOptions { pub output_file: String, } -impl Default for ErrmapOptions { - fn default() -> Self { - Self { - error_prefix: "E".to_string(), - error_category_module: ModuleId::new( - AccountAddress::from_hex_literal("0x1").unwrap(), - Identifier::new("errors").unwrap(), - ), - output_file: MOVE_ERROR_DESC_EXTENSION.to_string(), +impl ErrmapOptions { + // Create a builder for ErrmapOptions + pub fn builder() -> ErrmapOptionsBuilder { + ErrmapOptionsBuilder::new() + } +} + +// Define a builder struct to configure ErrmapOptions +pub struct ErrmapOptionsBuilder { + error_prefix: Option, + error_category_module: Option, + output_file: Option, +} + +impl ErrmapOptionsBuilder { + // Initialize the builder with default values + fn new() -> Self { + ErrmapOptionsBuilder { + error_prefix: None, + error_category_module: None, + output_file: None, + } + } + + // Set the error prefix + pub fn error_prefix(mut self, prefix: &str) -> Self { + self.error_prefix = Some(prefix.to_owned()); + self + } + + // Set the error category module + pub fn error_category_module(mut self, module: ModuleId) -> Self { + self.error_category_module = Some(module); + self + } + + // Set the output file + pub fn output_file(mut self, file: &str) -> Self { + self.output_file = Some(file.to_owned()); + self + } + + // Build the ErrmapOptions instance + pub fn build(self) -> ErrmapOptions { + ErrmapOptions { + error_prefix: self.error_prefix.expect("Error prefix not set"), + error_category_module: self.error_category_module.expect("Error category module not set"), + output_file: self.output_file.expect("Output file not set"), } } } @@ -140,3 +178,4 @@ impl<'env> ErrmapGen<'env> { self.env.symbol_pool().string(symbol) } } + From e87b2ff1c5bfe9256e2904ca8aff5134b08c155a Mon Sep 17 00:00:00 2001 From: Feliciss <10203-feliciss@users.noreply.0xacab.org> Date: Tue, 29 Aug 2023 15:02:21 -0600 Subject: [PATCH 2/3] add default to ErrmapOptions. --- .../move-prover/move-errmapgen/src/errmapgen.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/language/move-prover/move-errmapgen/src/errmapgen.rs b/language/move-prover/move-errmapgen/src/errmapgen.rs index 6a7cd4d8d9..cc0dd4574a 100644 --- a/language/move-prover/move-errmapgen/src/errmapgen.rs +++ b/language/move-prover/move-errmapgen/src/errmapgen.rs @@ -3,6 +3,7 @@ // SPDX-License-Identifier: Apache-2.0 use anyhow::{bail, Result}; +use move_command_line_common::files::MOVE_ERROR_DESC_EXTENSION; use move_core_types::{ account_address::AccountAddress, errmap::{ErrorDescription, ErrorMapping}, @@ -34,6 +35,20 @@ impl ErrmapOptions { } } +impl Default for ErrmapOptions { + // Create a default ErrmapOptions + fn default() -> Self { + Self { + error_prefix: "E".to_string(), + error_category_module: ModuleId::new( + AccountAddress::from_hex_literal("0x1").unwrap(), + Identifier::new("errors").unwrap(), + ), + output_file: MOVE_ERROR_DESC_EXTENSION.to_string(), + } + } +} + // Define a builder struct to configure ErrmapOptions pub struct ErrmapOptionsBuilder { error_prefix: Option, From 5fb04555a2826e54a67d9c548bce6edda214692d Mon Sep 17 00:00:00 2001 From: Feliciss <10203-feliciss@users.noreply.0xacab.org> Date: Tue, 29 Aug 2023 16:40:08 -0600 Subject: [PATCH 3/3] add trait for ErrmapOptionsBuilder. --- language/move-prover/move-errmapgen/src/errmapgen.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/language/move-prover/move-errmapgen/src/errmapgen.rs b/language/move-prover/move-errmapgen/src/errmapgen.rs index cc0dd4574a..36821ef2a9 100644 --- a/language/move-prover/move-errmapgen/src/errmapgen.rs +++ b/language/move-prover/move-errmapgen/src/errmapgen.rs @@ -50,6 +50,7 @@ impl Default for ErrmapOptions { } // Define a builder struct to configure ErrmapOptions +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct ErrmapOptionsBuilder { error_prefix: Option, error_category_module: Option,