-
Notifications
You must be signed in to change notification settings - Fork 42
support Solidity 0.8.29
and custom storage layouts
#1288
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
support Solidity 0.8.29
and custom storage layouts
#1288
Conversation
🦋 Changeset detectedLatest commit: 86f318b The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
To support the new [Custom Storage Layout](https://docs.soliditylang.org/en/v0.8.29/contracts.html#custom-storage-layout) language feature, `ContractDefinition` nodes will no longer have an optional `InheritanceSpecifier` child directly, but will hold a list of `ContractSpecifier` children, that can either be `InheritanceSpecifier` or `StorageLayoutSpecifier`. Closes NomicFoundation#1282 Additionally, the new grammar resurfaces the same issue as NomicFoundation#862 for call options during error recovery, so I fixed the parser codegen as well.
99da2e8
to
4c62e48
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left a couple of non-blocking questions/suggestions, but otherwise looks good to me.
crates/codegen/runtime/generator/src/parser/codegen/parser_definition.rs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! 🚀
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing). If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @nomicfoundation/slang@1.1.0 ### Minor Changes - [#1288](#1288) [`2090ab8`](2090ab8) Thanks [@OmarTawfik](https://github.com/OmarTawfik)! - support Solidity `0.8.29` and [Custom Storage Layouts](https://docs.soliditylang.org/en/v0.8.29/contracts.html#custom-storage-layout): - `ContractDefinition` nodes will no longer have an optional `InheritanceSpecifier` child directly, but will hold a list of `ContractSpecifier` children - `ContractSpecifier` nodes have either `InheritanceSpecifier` or `StorageLayoutSpecifier` children - [#1265](#1265) [`2312260`](2312260) Thanks [@mjoerussell](https://github.com/mjoerussell)! - Add `LanguageUtils::infer_language_versions(source_code) -> Version[]` API, which will analyze version pragmas inside a source file, and return a list of supported language versions that they allow. This can be used to select a valid language version to use with the rest of Slang APIs. Please see the [Choosing a Solidity Version](https://nomicfoundation.github.io/slang/1.1.0/user-guide/04-getting-started/02-choosing-a-solidity-version/) guide for more information. ### Patch Changes - [#1291](#1291) [`da1f863`](da1f863) Thanks [@ggiraldez](https://github.com/ggiraldez)! - Resolve arguments to inheritance specifiers and expressions in storage layout specifiers using the contract's parent scope. Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
To support the new Custom Storage Layout language feature,
ContractDefinition
nodes will no longer have an optionalInheritanceSpecifier
child directly, but will hold a list ofContractSpecifier
children, that can either beInheritanceSpecifier
orStorageLayoutSpecifier
.Closes #1282
Additionally, the new grammar resurfaces the same issue as #862 for call options during error recovery, so I fixed the parser codegen as well.