From 3204322da69886da0f838171ddf7bb639135998b Mon Sep 17 00:00:00 2001 From: KtorZ Date: Thu, 16 Feb 2023 10:28:11 +0100 Subject: [PATCH] Fix validator lookup by title. We want the lookup to yield a result when there's only a single validator; and no title is provided. So that users can simply do 'aiken address' in their project if it's unambiguous. The validator's name is only required to disambiguate between multiple validators. I also noticed that the order of arguments in with_validator was wrong. Somehow. --- crates/aiken-lang/src/format.rs | 1 + crates/aiken-lang/src/uplc.rs | 1 + crates/aiken-project/src/blueprint/mod.rs | 5 ++--- crates/aiken/src/cmd/blueprint/address.rs | 2 +- crates/aiken/src/cmd/blueprint/apply.rs | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/crates/aiken-lang/src/format.rs b/crates/aiken-lang/src/format.rs index cb8b32b0..a6e71b00 100644 --- a/crates/aiken-lang/src/format.rs +++ b/crates/aiken-lang/src/format.rs @@ -714,6 +714,7 @@ impl<'comments> Formatter<'comments> { let document = match expr { UntypedExpr::ByteArray { bytes, .. } => self.bytearray(bytes), + UntypedExpr::If { branches, final_else, diff --git a/crates/aiken-lang/src/uplc.rs b/crates/aiken-lang/src/uplc.rs index c9817361..cb8f186c 100644 --- a/crates/aiken-lang/src/uplc.rs +++ b/crates/aiken-lang/src/uplc.rs @@ -820,6 +820,7 @@ impl<'a> CodeGenerator<'a> { } }; + #[allow(clippy::bool_to_int_with_if)] let minus_tail = if has_tail { 1 } else { 0 }; if current_clause_index as i64 - minus_tail == prev_index { diff --git a/crates/aiken-project/src/blueprint/mod.rs b/crates/aiken-project/src/blueprint/mod.rs index 22ad0590..9e5260c7 100644 --- a/crates/aiken-project/src/blueprint/mod.rs +++ b/crates/aiken-project/src/blueprint/mod.rs @@ -61,8 +61,7 @@ where let mut validator = None; for v in self.validators.iter() { - let match_title = title.map(|t| v.title.contains(t)).unwrap_or(false); - + let match_title = Some(&v.title) == title.or(Some(&v.title)); if match_title { validator = Some(if validator.is_none() { LookupResult::One(v) @@ -78,8 +77,8 @@ where pub fn with_validator( &self, title: Option<&String>, - when_missing: fn(Vec) -> E, when_too_many: fn(Vec) -> E, + when_missing: fn(Vec) -> E, action: F, ) -> Result where diff --git a/crates/aiken/src/cmd/blueprint/address.rs b/crates/aiken/src/cmd/blueprint/address.rs index 623f18ba..a6cdd4bb 100644 --- a/crates/aiken/src/cmd/blueprint/address.rs +++ b/crates/aiken/src/cmd/blueprint/address.rs @@ -45,7 +45,7 @@ pub fn exec( validator .as_ref() .map(|v| format!(".{v}")) - .unwrap_or("".to_string()) + .unwrap_or_default() ) }); diff --git a/crates/aiken/src/cmd/blueprint/apply.rs b/crates/aiken/src/cmd/blueprint/apply.rs index 56147ef8..8d736457 100644 --- a/crates/aiken/src/cmd/blueprint/apply.rs +++ b/crates/aiken/src/cmd/blueprint/apply.rs @@ -46,7 +46,7 @@ pub fn exec( validator .as_ref() .map(|v| format!(".{v}")) - .unwrap_or("".to_string()) + .unwrap_or_default() ) });