[Bug] alloy-json-abi wrong version is selected causing serde to fail in compile-time.
Closed this issue · 5 comments
Component
serde
What version of Alloy are you on?
alloy main branch
Operating System
macOS (Apple Silicon)
Describe the bug
Hello,
I've noticed an issue in some of my repos in which I use alloy. I suspect that the error is related to cargo selecting a different version of alloy.
I was not able to reproduce the error in my repos, but I managed to reproduced by cloning alloy and running cargo check
. The output is the following:
➜ alloy git:(main) cargo check
Checking alloy-json-rpc v0.5.2 (/private/tmp/alloy/crates/json-rpc)
Checking alloy-consensus v0.5.2 (/private/tmp/alloy/crates/consensus)
Checking hyper v1.5.0
Checking aws-runtime v1.4.3
Checking alloy-json-abi v0.8.9
Checking alloy-rpc-types-mev v0.5.2 (/private/tmp/alloy/crates/rpc-types-mev)
Checking alloy-rpc-types-anvil v0.5.2 (/private/tmp/alloy/crates/rpc-types-anvil)
Checking alloy-rpc-types-debug v0.5.2 (/private/tmp/alloy/crates/rpc-types-debug)
Checking alloy-eip5792 v0.5.2 (/private/tmp/alloy/crates/eip5792)
error[E0424]: expected value, found module `self`
--> /Users/dario/.cargo/registry/src/index.crates.io-6f17d22bba15001f/alloy-json-abi-0.8.9/src/item.rs:70:42
|
19 | #[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
| --------- this function has a `self` parameter, but a macro invocation can only access identifiers it receives from parameters
...
70 | #[serde(default, flatten, with = "serde_state_mutability_compat")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `self` value is a keyword only available in methods with a `self` parameter
error[E0425]: cannot find value `__s` in this scope
--> /Users/dario/.cargo/registry/src/index.crates.io-6f17d22bba15001f/alloy-json-abi-0.8.9/src/item.rs:70:42
|
70 | #[serde(default, flatten, with = "serde_state_mutability_compat")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
error[E0424]: expected value, found module `self`
--> /Users/dario/.cargo/registry/src/index.crates.io-6f17d22bba15001f/alloy-json-abi-0.8.9/src/item.rs:78:42
|
19 | #[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
| --------- this function has a `self` parameter, but a macro invocation can only access identifiers it receives from parameters
...
78 | #[serde(default, flatten, with = "serde_state_mutability_compat")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `self` value is a keyword only available in methods with a `self` parameter
error[E0425]: cannot find value `__s` in this scope
--> /Users/dario/.cargo/registry/src/index.crates.io-6f17d22bba15001f/alloy-json-abi-0.8.9/src/item.rs:78:42
|
78 | #[serde(default, flatten, with = "serde_state_mutability_compat")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
error[E0424]: expected value, found module `self`
--> /Users/dario/.cargo/registry/src/index.crates.io-6f17d22bba15001f/alloy-json-abi-0.8.9/src/item.rs:86:42
|
19 | #[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
| --------- this function has a `self` parameter, but a macro invocation can only access identifiers it receives from parameters
...
86 | #[serde(default, flatten, with = "serde_state_mutability_compat")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `self` value is a keyword only available in methods with a `self` parameter
error[E0425]: cannot find value `__s` in this scope
--> /Users/dario/.cargo/registry/src/index.crates.io-6f17d22bba15001f/alloy-json-abi-0.8.9/src/item.rs:86:42
|
86 | #[serde(default, flatten, with = "serde_state_mutability_compat")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
error[E0424]: expected value, found module `self`
--> /Users/dario/.cargo/registry/src/index.crates.io-6f17d22bba15001f/alloy-json-abi-0.8.9/src/item.rs:100:42
|
19 | #[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
| --------- this function has a `self` parameter, but a macro invocation can only access identifiers it receives from parameters
...
100 | #[serde(default, flatten, with = "serde_state_mutability_compat")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `self` value is a keyword only available in methods with a `self` parameter
error[E0425]: cannot find value `__s` in this scope
--> /Users/dario/.cargo/registry/src/index.crates.io-6f17d22bba15001f/alloy-json-abi-0.8.9/src/item.rs:100:42
|
100 | #[serde(default, flatten, with = "serde_state_mutability_compat")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
error[E0425]: cannot find value `__deserializer` in this scope
--> /Users/dario/.cargo/registry/src/index.crates.io-6f17d22bba15001f/alloy-json-abi-0.8.9/src/item.rs:93:36
|
93 | #[serde(deserialize_with = "validate_identifier")]
| ^^^^^^^^^^^^^^^^^^^^^ not found in this scope
error[E0425]: cannot find value `__deserializer` in this scope
--> /Users/dario/.cargo/registry/src/index.crates.io-6f17d22bba15001f/alloy-json-abi-0.8.9/src/item.rs:107:36
|
107 | #[serde(deserialize_with = "validate_identifier")]
| ^^^^^^^^^^^^^^^^^^^^^ not found in this scope
error[E0425]: cannot find value `__deserializer` in this scope
--> /Users/dario/.cargo/registry/src/index.crates.io-6f17d22bba15001f/alloy-json-abi-0.8.9/src/item.rs:120:36
|
120 | #[serde(deserialize_with = "validate_identifier")]
| ^^^^^^^^^^^^^^^^^^^^^ not found in this scope
Checking alloy-transport v0.5.2 (/private/tmp/alloy/crates/transport)
Some errors have detailed explanations: E0424, E0425.
For more information about an error, try `rustc --explain E0424`.
error: could not compile `alloy-json-abi` (lib) due to 11 previous errors
warning: build failed, waiting for other jobs to finish...
Same issue if you create an empty project with cargo new sample_project
, then cargo add alloy --features full
and cargo check
after.
Also happens on Ubuntu x64
can confirm, same issues on macOS as described by @dgrr
rustup --version
rustup 1.27.1 (54dd3d00f 2024-04-24)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.80.0 (051478957 2024-07-21)`
cargo update && cargo check
will now produce this for every project i've tried
> $ rustup --version
rustup 1.27.1 (54dd3d00f 2024-04-24)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.82.0 (f6e511eec 2024-10-15)
this appears to be a breaking change in serde, possibly accidental
It can be resolved as follows
cargo update -p serde --precise 1.0.210 && cargo update -p serde_derive --precise 1.0.210 && cargo c
Duplicate of alloy-rs/core#778. See alloy-rs/core#778 (comment).