From ea269b14a288edc9df10f8eceedfff9e430ffc2b Mon Sep 17 00:00:00 2001 From: KtorZ Date: Sat, 4 Feb 2023 11:38:09 +0100 Subject: [PATCH] Fix deserialization issue when 'parameters' is missing. Deserialize to an empty vector. --- crates/aiken-project/src/blueprint/mod.rs | 4 ++-- crates/aiken-project/src/blueprint/schema.rs | 6 ++++++ crates/aiken-project/src/blueprint/validator.rs | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/crates/aiken-project/src/blueprint/mod.rs b/crates/aiken-project/src/blueprint/mod.rs index 7652e7bd..a420d6a1 100644 --- a/crates/aiken-project/src/blueprint/mod.rs +++ b/crates/aiken-project/src/blueprint/mod.rs @@ -10,7 +10,7 @@ use std::fmt::{self, Debug, Display}; use validator::{Purpose, Validator}; #[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize)] -pub struct Blueprint { +pub struct Blueprint { pub preamble: Preamble, pub validators: Vec>, } @@ -55,7 +55,7 @@ impl Blueprint { impl Blueprint where - T: Clone, + T: Clone + Default, { pub fn lookup( &self, diff --git a/crates/aiken-project/src/blueprint/schema.rs b/crates/aiken-project/src/blueprint/schema.rs index f598199b..df96b9a5 100644 --- a/crates/aiken-project/src/blueprint/schema.rs +++ b/crates/aiken-project/src/blueprint/schema.rs @@ -302,6 +302,12 @@ impl Data { } } +impl Default for Schema { + fn default() -> Self { + Schema::Unit + } +} + impl Display for Schema { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let s = serde_json::to_string_pretty(self).map_err(|_| fmt::Error)?; diff --git a/crates/aiken-project/src/blueprint/validator.rs b/crates/aiken-project/src/blueprint/validator.rs index ea13ce18..84e86645 100644 --- a/crates/aiken-project/src/blueprint/validator.rs +++ b/crates/aiken-project/src/blueprint/validator.rs @@ -22,6 +22,7 @@ pub struct Validator { pub datum: Option>, pub redeemer: Annotated, #[serde(skip_serializing_if = "Vec::is_empty")] + #[serde(default)] pub parameters: Vec>, #[serde(flatten)] pub program: Program,