Skip to content

Commit

Permalink
sanctuary grammar fixes (#1246)
Browse files Browse the repository at this point in the history
- make sure `super` and `this` keywords are unreserved before `0.8.0`
- enable yul's `true` and `false` keywords starting from `0.6.2`
- make sure assembly flags are only enabled starting from `0.8.13`
- unreserve `jump` and `jumpi` yul keywords between `0.6.0` and `0.8.0`
  • Loading branch information
OmarTawfik authored Feb 11, 2025
1 parent 99d182f commit aea2dd0
Show file tree
Hide file tree
Showing 75 changed files with 1,085 additions and 214 deletions.
5 changes: 5 additions & 0 deletions .changeset/beige-cooks-learn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@nomicfoundation/slang": patch
---

unreserve `jump` and `jumpi` yul keywords between `0.6.0` and `0.8.0`
5 changes: 5 additions & 0 deletions .changeset/famous-mugs-film.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@nomicfoundation/slang": patch
---

make sure assembly flags are only enabled starting from `0.8.13`
5 changes: 5 additions & 0 deletions .changeset/red-beans-live.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@nomicfoundation/slang": patch
---

enable yul's `true` and `false` keywords starting from `0.6.2`
5 changes: 5 additions & 0 deletions .changeset/silver-scissors-wonder.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@nomicfoundation/slang": patch
---

make sure `super` and `this` keywords are unreserved before `0.8.0`.
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

87 changes: 67 additions & 20 deletions crates/solidity/inputs/language/src/definition.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1395,7 +1395,10 @@ codegen_language_macros::compile!(Language(
Keyword(
name = SuperKeyword,
identifier = Identifier,
definitions = [KeywordDefinition(value = Atom("super"))]
definitions = [KeywordDefinition(
reserved = From("0.8.0"),
value = Atom("super")
)]
),
Keyword(
name = SupportsKeyword,
Expand Down Expand Up @@ -1424,7 +1427,10 @@ codegen_language_macros::compile!(Language(
Keyword(
name = ThisKeyword,
identifier = Identifier,
definitions = [KeywordDefinition(value = Atom("this"))]
definitions = [KeywordDefinition(
reserved = From("0.8.0"),
value = Atom("this")
)]
),
Keyword(
name = ThrowKeyword,
Expand Down Expand Up @@ -2889,12 +2895,16 @@ codegen_language_macros::compile!(Language(
fields = (
assembly_keyword = Required(AssemblyKeyword),
label = Optional(reference = StringLiteral),
flags = Optional(reference = AssemblyFlagsDeclaration),
flags = Optional(
reference = AssemblyFlagsDeclaration,
enabled = From("0.8.13")
),
body = Required(YulBlock)
)
),
Struct(
name = AssemblyFlagsDeclaration,
enabled = From("0.8.13"),
error_recovery = FieldsErrorRecovery(
delimiters =
FieldDelimiters(open = open_paren, close = close_paren)
Expand All @@ -2908,7 +2918,8 @@ codegen_language_macros::compile!(Language(
Separated(
name = AssemblyFlags,
reference = StringLiteral,
separator = Comma
separator = Comma,
enabled = From("0.8.13")
)
]
),
Expand Down Expand Up @@ -4535,8 +4546,8 @@ codegen_language_macros::compile!(Language(
Enum(
name = YulLiteral,
variants = [
EnumVariant(reference = YulTrueKeyword),
EnumVariant(reference = YulFalseKeyword),
EnumVariant(reference = YulTrueKeyword, enabled = From("0.6.2")),
EnumVariant(reference = YulFalseKeyword, enabled = From("0.6.2")),
EnumVariant(reference = YulDecimalLiteral),
EnumVariant(reference = YulHexLiteral),
EnumVariant(reference = HexStringLiteral),
Expand Down Expand Up @@ -5053,7 +5064,10 @@ codegen_language_macros::compile!(Language(
Keyword(
name = YulFalseKeyword,
identifier = YulIdentifier,
definitions = [KeywordDefinition(value = Atom("false"))]
definitions = [KeywordDefinition(
enabled = From("0.6.2"),
value = Atom("false")
)]
),
Keyword(
name = YulFinalKeyword,
Expand Down Expand Up @@ -5558,18 +5572,42 @@ codegen_language_macros::compile!(Language(
Keyword(
name = YulJumpKeyword,
identifier = YulIdentifier,
definitions = [KeywordDefinition(
enabled = Till("0.5.0"),
value = Atom("jump")
)]
definitions = [
// This keyword was introduced in the beginning, and was reserved.
// In '0.5.0', it was deprecated.
// In '0.6.0', it was unreserved.
// In '0.8.0', it was reserved again.
KeywordDefinition(
enabled = Till("0.5.0"),
reserved = Till("0.6.0"),
value = Atom("jump")
),
KeywordDefinition(
enabled = Never,
reserved = From("0.8.0"),
value = Atom("jump")
)
]
),
Keyword(
name = YulJumpiKeyword,
identifier = YulIdentifier,
definitions = [KeywordDefinition(
enabled = Till("0.5.0"),
value = Atom("jumpi")
)]
definitions = [
// This keyword was introduced in the beginning, and was reserved.
// In '0.5.0', it was deprecated.
// In '0.6.0', it was unreserved.
// In '0.8.0', it was reserved again.
KeywordDefinition(
enabled = Till("0.5.0"),
reserved = Till("0.6.0"),
value = Atom("jumpi")
),
KeywordDefinition(
enabled = Never,
reserved = From("0.8.0"),
value = Atom("jumpi")
)
]
),
Keyword(
name = YulKeccak256Keyword,
Expand Down Expand Up @@ -6114,8 +6152,11 @@ codegen_language_macros::compile!(Language(
Keyword(
name = YulSuperKeyword,
identifier = YulIdentifier,
definitions =
[KeywordDefinition(enabled = Never, value = Atom("super"))]
definitions = [KeywordDefinition(
enabled = Never,
reserved = From("0.8.0"),
value = Atom("super")
)]
),
Keyword(
name = YulSupportsKeyword,
Expand Down Expand Up @@ -6148,8 +6189,11 @@ codegen_language_macros::compile!(Language(
Keyword(
name = YulThisKeyword,
identifier = YulIdentifier,
definitions =
[KeywordDefinition(enabled = Never, value = Atom("this"))]
definitions = [KeywordDefinition(
enabled = Never,
reserved = From("0.8.0"),
value = Atom("this")
)]
),
Keyword(
name = YulThrowKeyword,
Expand All @@ -6172,7 +6216,10 @@ codegen_language_macros::compile!(Language(
Keyword(
name = YulTrueKeyword,
identifier = YulIdentifier,
definitions = [KeywordDefinition(value = Atom("true"))]
definitions = [KeywordDefinition(
enabled = From("0.6.2"),
value = Atom("true")
)]
),
Keyword(
name = YulTStoreKeyword,
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit aea2dd0

Please sign in to comment.