diff --git a/.changeset/early-numbers-wink.md b/.changeset/early-numbers-wink.md new file mode 100644 index 0000000000..87f7a36fe4 --- /dev/null +++ b/.changeset/early-numbers-wink.md @@ -0,0 +1,5 @@ +--- +"@nomicfoundation/slang": patch +--- + +Add support for Solidity `0.8.32` and `0.8.33`. diff --git a/crates/solidity-v2/inputs/language/src/definition.rs b/crates/solidity-v2/inputs/language/src/definition.rs index 8b8da7e1c9..8ce6a6b9b1 100644 --- a/crates/solidity-v2/inputs/language/src/definition.rs +++ b/crates/solidity-v2/inputs/language/src/definition.rs @@ -27,7 +27,7 @@ language_v2_macros::compile!(Language( "0.8.2", "0.8.3", "0.8.4", "0.8.5", "0.8.6", "0.8.7", "0.8.8", "0.8.9", "0.8.10", "0.8.11", "0.8.12", "0.8.13", "0.8.14", "0.8.15", "0.8.16", "0.8.17", "0.8.18", "0.8.19", "0.8.20", "0.8.21", "0.8.22", "0.8.23", "0.8.24", "0.8.25", "0.8.26", "0.8.27", "0.8.28", "0.8.29", - "0.8.30", "0.8.31" + "0.8.30", "0.8.31", "0.8.32", "0.8.33" ], sections = [ Section( diff --git a/crates/solidity-v2/outputs/cargo/common/src/versions/language_versions.generated.rs b/crates/solidity-v2/outputs/cargo/common/src/versions/language_versions.generated.rs index 0fa336cccb..fc9025ea82 100644 --- a/crates/solidity-v2/outputs/cargo/common/src/versions/language_versions.generated.rs +++ b/crates/solidity-v2/outputs/cargo/common/src/versions/language_versions.generated.rs @@ -94,6 +94,8 @@ pub enum LanguageVersion { V0_8_29, V0_8_30, V0_8_31, + V0_8_32, + V0_8_33, } #[derive(Debug, Error, PartialEq)] @@ -107,6 +109,7 @@ pub enum FromSemverError { impl TryFrom for LanguageVersion { type Error = FromSemverError; + #[allow(clippy::too_many_lines)] fn try_from(version: Version) -> Result { let Version { major, @@ -207,6 +210,8 @@ impl TryFrom for LanguageVersion { (0, 8, 29) => LanguageVersion::V0_8_29, (0, 8, 30) => LanguageVersion::V0_8_30, (0, 8, 31) => LanguageVersion::V0_8_31, + (0, 8, 32) => LanguageVersion::V0_8_32, + (0, 8, 33) => LanguageVersion::V0_8_33, _ => return Err(FromSemverError::UnsupportedVersion), }) } diff --git a/crates/solidity-v2/outputs/cargo/common/src/versions/language_versions.rs.jinja2 b/crates/solidity-v2/outputs/cargo/common/src/versions/language_versions.rs.jinja2 index 6b62bd3312..0b29204495 100644 --- a/crates/solidity-v2/outputs/cargo/common/src/versions/language_versions.rs.jinja2 +++ b/crates/solidity-v2/outputs/cargo/common/src/versions/language_versions.rs.jinja2 @@ -22,6 +22,7 @@ pub enum FromSemverError { impl TryFrom for LanguageVersion { type Error = FromSemverError; + #[allow(clippy::too_many_lines)] fn try_from(version: Version) -> Result { let Version { major, diff --git a/crates/solidity/inputs/language/src/definition.rs b/crates/solidity/inputs/language/src/definition.rs index d1001b27f9..10b5ae71ae 100644 --- a/crates/solidity/inputs/language/src/definition.rs +++ b/crates/solidity/inputs/language/src/definition.rs @@ -27,7 +27,7 @@ language_macros::compile!(Language( "0.8.2", "0.8.3", "0.8.4", "0.8.5", "0.8.6", "0.8.7", "0.8.8", "0.8.9", "0.8.10", "0.8.11", "0.8.12", "0.8.13", "0.8.14", "0.8.15", "0.8.16", "0.8.17", "0.8.18", "0.8.19", "0.8.20", "0.8.21", "0.8.22", "0.8.23", "0.8.24", "0.8.25", "0.8.26", "0.8.27", "0.8.28", "0.8.29", - "0.8.30", "0.8.31" + "0.8.30", "0.8.31", "0.8.32", "0.8.33" ], sections = [ Section( diff --git a/crates/solidity/outputs/cargo/crate/src/utils/language_facts.generated.rs b/crates/solidity/outputs/cargo/crate/src/utils/language_facts.generated.rs index 2b525c8462..1bc7c90caa 100644 --- a/crates/solidity/outputs/cargo/crate/src/utils/language_facts.generated.rs +++ b/crates/solidity/outputs/cargo/crate/src/utils/language_facts.generated.rs @@ -94,13 +94,15 @@ impl LanguageFacts { Version::new(0, 8, 29), Version::new(0, 8, 30), Version::new(0, 8, 31), + Version::new(0, 8, 32), + Version::new(0, 8, 33), ]; /// The earliest version of `Solidity` supported by Slang. pub const EARLIEST_VERSION: Version = Version::new(0, 4, 11); /// The latest version of `Solidity` supported by Slang. - pub const LATEST_VERSION: Version = Version::new(0, 8, 31); + pub const LATEST_VERSION: Version = Version::new(0, 8, 33); /// Infer the language versions that are compatible with the provided `Solidity` /// source code. The returned iterator will produce all compatible versions in order, starting with diff --git a/crates/solidity/outputs/cargo/crate/src/utils/versions.generated.rs b/crates/solidity/outputs/cargo/crate/src/utils/versions.generated.rs index cd4a8acd46..f2136efca9 100644 --- a/crates/solidity/outputs/cargo/crate/src/utils/versions.generated.rs +++ b/crates/solidity/outputs/cargo/crate/src/utils/versions.generated.rs @@ -91,3 +91,5 @@ pub(crate) const VERSION_0_8_28: Version = Version::new(0, 8, 28); pub(crate) const VERSION_0_8_29: Version = Version::new(0, 8, 29); pub(crate) const VERSION_0_8_30: Version = Version::new(0, 8, 30); pub(crate) const VERSION_0_8_31: Version = Version::new(0, 8, 31); +pub(crate) const VERSION_0_8_32: Version = Version::new(0, 8, 32); +pub(crate) const VERSION_0_8_33: Version = Version::new(0, 8, 33); diff --git a/crates/solidity/outputs/cargo/tests/src/utils/mod.rs b/crates/solidity/outputs/cargo/tests/src/utils/mod.rs index c4e5544286..1ac23c68a5 100644 --- a/crates/solidity/outputs/cargo/tests/src/utils/mod.rs +++ b/crates/solidity/outputs/cargo/tests/src/utils/mod.rs @@ -6,7 +6,7 @@ pub(crate) mod multi_part_file; #[test] fn list_all_versions() { - assert_eq!(LanguageFacts::ALL_VERSIONS.len(), 86); + assert_eq!(LanguageFacts::ALL_VERSIONS.len(), 88); assert!(LanguageFacts::ALL_VERSIONS.is_sorted()); assert_eq!( LanguageFacts::ALL_VERSIONS.iter().min(), diff --git a/crates/solidity/outputs/spec/generated/language-definition.json b/crates/solidity/outputs/spec/generated/language-definition.json index 0eb7a1e951..a577e7961f 100644 --- a/crates/solidity/outputs/spec/generated/language-definition.json +++ b/crates/solidity/outputs/spec/generated/language-definition.json @@ -113,7 +113,9 @@ "0.8.28", "0.8.29", "0.8.30", - "0.8.31" + "0.8.31", + "0.8.32", + "0.8.33" ], "sections": [ { diff --git a/crates/solidity/outputs/spec/generated/public/supported-versions.md b/crates/solidity/outputs/spec/generated/public/supported-versions.md index 830b6409f7..631514d119 100644 --- a/crates/solidity/outputs/spec/generated/public/supported-versions.md +++ b/crates/solidity/outputs/spec/generated/public/supported-versions.md @@ -1,8 +1,8 @@ -This grammar compiles information from 86 publicly released versions of Solidity: +This grammar compiles information from 88 publicly released versions of Solidity: -`0.4.11` `0.4.12` `0.4.13` `0.4.14` `0.4.15` `0.4.16` `0.4.17` `0.4.18` `0.4.19` `0.4.20` `0.4.21` `0.4.22` `0.4.23` `0.4.24` `0.4.25` `0.4.26` `0.5.0` `0.5.1` `0.5.2` `0.5.3` `0.5.4` `0.5.5` `0.5.6` `0.5.7` `0.5.8` `0.5.9` `0.5.10` `0.5.11` `0.5.12` `0.5.13` `0.5.14` `0.5.15` `0.5.16` `0.5.17` `0.6.0` `0.6.1` `0.6.2` `0.6.3` `0.6.4` `0.6.5` `0.6.6` `0.6.7` `0.6.8` `0.6.9` `0.6.10` `0.6.11` `0.6.12` `0.7.0` `0.7.1` `0.7.2` `0.7.3` `0.7.4` `0.7.5` `0.7.6` `0.8.0` `0.8.1` `0.8.2` `0.8.3` `0.8.4` `0.8.5` `0.8.6` `0.8.7` `0.8.8` `0.8.9` `0.8.10` `0.8.11` `0.8.12` `0.8.13` `0.8.14` `0.8.15` `0.8.16` `0.8.17` `0.8.18` `0.8.19` `0.8.20` `0.8.21` `0.8.22` `0.8.23` `0.8.24` `0.8.25` `0.8.26` `0.8.27` `0.8.28` `0.8.29` `0.8.30` `0.8.31` +`0.4.11` `0.4.12` `0.4.13` `0.4.14` `0.4.15` `0.4.16` `0.4.17` `0.4.18` `0.4.19` `0.4.20` `0.4.21` `0.4.22` `0.4.23` `0.4.24` `0.4.25` `0.4.26` `0.5.0` `0.5.1` `0.5.2` `0.5.3` `0.5.4` `0.5.5` `0.5.6` `0.5.7` `0.5.8` `0.5.9` `0.5.10` `0.5.11` `0.5.12` `0.5.13` `0.5.14` `0.5.15` `0.5.16` `0.5.17` `0.6.0` `0.6.1` `0.6.2` `0.6.3` `0.6.4` `0.6.5` `0.6.6` `0.6.7` `0.6.8` `0.6.9` `0.6.10` `0.6.11` `0.6.12` `0.7.0` `0.7.1` `0.7.2` `0.7.3` `0.7.4` `0.7.5` `0.7.6` `0.8.0` `0.8.1` `0.8.2` `0.8.3` `0.8.4` `0.8.5` `0.8.6` `0.8.7` `0.8.8` `0.8.9` `0.8.10` `0.8.11` `0.8.12` `0.8.13` `0.8.14` `0.8.15` `0.8.16` `0.8.17` `0.8.18` `0.8.19` `0.8.20` `0.8.21` `0.8.22` `0.8.23` `0.8.24` `0.8.25` `0.8.26` `0.8.27` `0.8.28` `0.8.29` `0.8.30` `0.8.31` `0.8.32` `0.8.33` Among which, 40 versions have breaking changes: diff --git a/documentation/public/user-guide/04-getting-started/02-choosing-a-solidity-version/examples/01-supported-versions.test.mts b/documentation/public/user-guide/04-getting-started/02-choosing-a-solidity-version/examples/01-supported-versions.test.mts index 2158209084..de6fadb828 100644 --- a/documentation/public/user-guide/04-getting-started/02-choosing-a-solidity-version/examples/01-supported-versions.test.mts +++ b/documentation/public/user-guide/04-getting-started/02-choosing-a-solidity-version/examples/01-supported-versions.test.mts @@ -2,9 +2,9 @@ import assert from "node:assert"; import { LanguageFacts } from "@nomicfoundation/slang/utils"; test("supported versions", () => { - assert.strictEqual(LanguageFacts.allVersions().length, 86); + assert.strictEqual(LanguageFacts.allVersions().length, 88); assert.strictEqual(LanguageFacts.earliestVersion(), "0.4.11"); - assert.strictEqual(LanguageFacts.latestVersion(), "0.8.31"); + assert.strictEqual(LanguageFacts.latestVersion(), "0.8.33"); }); diff --git a/documentation/public/user-guide/04-getting-started/02-choosing-a-solidity-version/examples/02-infer-versions.test.mts b/documentation/public/user-guide/04-getting-started/02-choosing-a-solidity-version/examples/02-infer-versions.test.mts index 3ea388d21d..ae453c6192 100644 --- a/documentation/public/user-guide/04-getting-started/02-choosing-a-solidity-version/examples/02-infer-versions.test.mts +++ b/documentation/public/user-guide/04-getting-started/02-choosing-a-solidity-version/examples/02-infer-versions.test.mts @@ -16,5 +16,5 @@ test("infer versions", () => { assert(!versions.includes("1.0.0")); const latest = versions.at(-1); - assert(latest == "0.8.31"); + assert(latest == "0.8.33"); });