Skip to content

Conversation

OmarTawfik
Copy link
Contributor

@OmarTawfik OmarTawfik commented Mar 24, 2025

To support the new 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 #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.

Copy link

changeset-bot bot commented Mar 24, 2025

🦋 Changeset detected

Latest commit: 86f318b

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@nomicfoundation/slang Minor

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.
@OmarTawfik OmarTawfik force-pushed the custom-storage-layout branch from 99da2e8 to 4c62e48 Compare March 24, 2025 17:45
@OmarTawfik OmarTawfik marked this pull request as ready for review March 24, 2025 18:16
@OmarTawfik OmarTawfik requested review from a team as code owners March 24, 2025 18:16
Copy link
Contributor

@ggiraldez ggiraldez left a 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.

Copy link
Contributor

@ggiraldez ggiraldez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! 🚀

@OmarTawfik OmarTawfik added this pull request to the merge queue Mar 26, 2025
Merged via the queue into NomicFoundation:main with commit 2090ab8 Mar 26, 2025
2 checks passed
@OmarTawfik OmarTawfik deleted the custom-storage-layout branch March 26, 2025 17:41
@github-actions github-actions bot mentioned this pull request Mar 26, 2025
github-merge-queue bot pushed a commit that referenced this pull request Apr 10, 2025
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support Custom Storage Layout
2 participants