Skip to content

Commit 4dc02fb

Browse files
committed
Add back constant test
1 parent 0cfa86a commit 4dc02fb

File tree

3 files changed

+43
-5
lines changed

3 files changed

+43
-5
lines changed

packages/vm-derive-impl/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ blake3 = "1.5.4"
1111
cargo-manifest = "0.15.2"
1212
proc-macro2 = "1.0.86"
1313
quote = "1.0.37"
14-
syn = { version = "2.0.77", features = ["full"] }
14+
syn = { version = "2.0.77", features = ["extra-traits", "full"] }

packages/vm-derive-impl/src/hash_function.rs

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,48 @@
1+
use std::hash::{Hash, Hasher};
2+
13
use proc_macro2::TokenStream;
24
use quote::quote;
35

46
use super::{bail, maybe};
57

8+
struct Blake3Hasher {
9+
hasher: blake3::Hasher,
10+
}
11+
12+
impl Blake3Hasher {
13+
fn new() -> Self {
14+
Self {
15+
hasher: blake3::Hasher::new(),
16+
}
17+
}
18+
19+
fn consume(self) -> String {
20+
self.hasher.finalize().to_hex().to_string()
21+
}
22+
}
23+
24+
impl Hasher for Blake3Hasher {
25+
fn write(&mut self, bytes: &[u8]) {
26+
self.hasher.update(bytes);
27+
}
28+
29+
fn finish(&self) -> u64 {
30+
unimplemented!();
31+
}
32+
}
33+
634
pub fn hash_function_impl(attr: TokenStream, input: TokenStream) -> TokenStream {
735
if !attr.is_empty() {
836
bail!(attr, "Unexpected parameters");
937
}
1038

1139
// Just verify that this is actually a function
12-
let _: syn::ItemFn = maybe!(syn::parse2(input.clone()));
40+
let function: syn::ItemFn = maybe!(syn::parse2(input.clone()));
41+
42+
let mut hasher = Blake3Hasher::new();
43+
function.hash(&mut hasher);
1344

14-
let display = input.to_string();
15-
let hex_hash = blake3::hash(display.as_bytes()).to_hex();
16-
let hex_hash = hex_hash.as_str();
45+
let hex_hash = hasher.consume();
1746

1847
quote! {
1948
#input

packages/vm/src/modules/file_system_cache.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,4 +465,13 @@ mod tests {
465465
assert_eq!(v2, v3);
466466
assert_eq!(v3, v4);
467467
}
468+
469+
#[test]
470+
fn module_version_static() {
471+
let version = raw_module_version_discriminator();
472+
assert_eq!(
473+
version,
474+
"9ef3de8cb5fb770171ae3ea14db67fe25d946fef383472a18ddd75ced7bfcd4b"
475+
);
476+
}
468477
}

0 commit comments

Comments
 (0)