Skip to content

Commit

Permalink
zcash_keys: Fix a few problems with no-flags compilation.
Browse files Browse the repository at this point in the history
  • Loading branch information
nuttycom committed Mar 4, 2024
1 parent 41fda05 commit 3904534
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 16 deletions.
1 change: 1 addition & 0 deletions zcash_keys/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ jubjub.workspace = true
proptest.workspace = true
rand_core.workspace = true
zcash_address = { workspace = true, features = ["test-dependencies"] }
zcash_primitives = { workspace = true, features = ["test-dependencies"] }

[features]
## Enables use of transparent key parts and addresses
Expand Down
12 changes: 7 additions & 5 deletions zcash_keys/src/address.rs
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,11 @@ impl UnifiedAddress {

/// Returns whether this address has a Sapling receiver.
pub fn has_sapling(&self) -> bool {
self.sapling.is_some()
#[cfg(not(feature = "sapling"))]
return false;

#[cfg(feature = "sapling")]
return self.sapling.is_some();
}

/// Returns the Sapling receiver within this Unified Address, if any.
Expand Down Expand Up @@ -213,6 +217,7 @@ impl UnifiedAddress {
let result = std::iter::empty();
#[cfg(feature = "orchard")]
let result = result.chain(self.orchard.map(|_| Typecode::Orchard));
#[cfg(feature = "sapling")]
let result = result.chain(self.sapling.map(|_| Typecode::Sapling));
let result = result.chain(self.transparent.map(|taddr| match taddr {
TransparentAddress::PublicKeyHash(_) => Typecode::P2pkh,
Expand Down Expand Up @@ -353,17 +358,14 @@ mod tests {
use zcash_address::test_vectors;
use zcash_primitives::consensus::MAIN_NETWORK;

use super::Address;
use super::{Address, UnifiedAddress};

#[cfg(feature = "sapling")]
use crate::keys::sapling;

#[cfg(any(feature = "orchard", feature = "sapling"))]
use zcash_primitives::zip32::AccountId;

#[cfg(any(feature = "orchard", feature = "sapling"))]
use super::UnifiedAddress;

#[test]
#[cfg(any(feature = "orchard", feature = "sapling"))]
fn ua_round_trip() {
Expand Down
26 changes: 15 additions & 11 deletions zcash_keys/src/keys.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@ use zcash_primitives::{

use crate::address::UnifiedAddress;

#[cfg(feature = "transparent-inputs")]
use zcash_primitives::legacy::keys::NonHardenedChildIndex;

#[cfg(feature = "transparent-inputs")]
use {
std::convert::TryInto,
zcash_primitives::legacy::keys::{self as legacy, IncomingViewingKey},
zcash_primitives::legacy::keys::{self as legacy, IncomingViewingKey, NonHardenedChildIndex},
};

#[cfg(all(feature = "test-dependencies", feature = "transparent-inputs"))]
#[cfg(all(
feature = "transparent-inputs",
any(test, feature = "test-dependencies")
))]
use zcash_primitives::legacy::TransparentAddress;

#[cfg(feature = "unstable")]
Expand Down Expand Up @@ -826,13 +826,15 @@ pub mod testing {

#[cfg(test)]
mod tests {
use proptest::prelude::proptest;

use super::UnifiedFullViewingKey;
use zcash_primitives::consensus::MAIN_NETWORK;
use proptest::prelude::proptest;

#[cfg(any(feature = "orchard", feature = "sapling"))]
use zip32::AccountId;
#[cfg(any(
feature = "orchard",
feature = "sapling",
feature = "transparent-inputs"
))]
use {zcash_primitives::consensus::MAIN_NETWORK, zip32::AccountId};

#[cfg(feature = "sapling")]
use super::sapling;
Expand Down Expand Up @@ -919,7 +921,7 @@ mod tests {
);

#[cfg(not(any(feature = "orchard", feature = "sapling")))]
assert_eq!(ufvk, None);
assert!(ufvk.is_none());

#[cfg(any(feature = "orchard", feature = "sapling"))]
{
Expand Down Expand Up @@ -1034,6 +1036,7 @@ mod tests {

// The test vectors contain some diversifier indices that do not generate
// valid Sapling addresses, so skip those.
#[cfg(feature = "sapling")]
if ufvk.sapling().unwrap().address(d_idx).is_none() {
continue;
}
Expand All @@ -1054,6 +1057,7 @@ mod tests {
if tvua.transparent().is_some() {
assert_eq!(tvua.transparent(), ua.transparent());
}
#[cfg(feature = "sapling")]
if tvua.sapling().is_some() {
assert_eq!(tvua.sapling(), ua.sapling());
}
Expand Down

0 comments on commit 3904534

Please sign in to comment.