foundry-rs / foundry

Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
https://getfoundry.sh
Apache License 2.0
8.35k stars 1.77k forks source link

feat(fmt): support `transient` keyword #9088

Open adhusson opened 1 month ago

adhusson commented 1 month ago

Component

Forge

Have you ensured that all of these are up to date?

What version of Foundry are you on?

forge 0.2.0 (f79c53c 2024-10-10T00:25:05.432733000Z)

What command(s) is the bug in?

forge fmt

Operating System

macOS (Apple Silicon)

Describe the bug

When the new transient keyword is used, forge fmt fails. For instance if transient is added to the number state variable of the initial Counter contract:

Error:
Failed to parse Solidity code for src/Counter.sol. Leaving source unchanged.

Context:
- failed to parse file:
Error: ParserError
   ╭─[:5:30]
   │
 5 │     uint256 public transient number;
   │                              ───┬──
   │                                 ╰──── unrecognised token 'number', expected ";", "="
───╯
zerosnacks commented 1 month ago

Hi @adhusson thanks for flagging

For future reference: https://soliditylang.org/blog/2024/10/09/solidity-0.8.28-release-announcement/ this was introduced in 0.8.28

To fix this we'll need an update to Solang: https://crates.io/crates/solang-parser

See: https://github.com/hyperledger-solang/solang/issues/1670

zerosnacks commented 1 month ago

Update @adhusson: the Solang team is now aware and adding it should be straightforward, just looking for the time to add it

zerosnacks commented 2 weeks ago

cc @DaniPopes do we support the transient keyword in Solar?

DaniPopes commented 2 weeks ago

Yes, this will be fixed by the migration