Skip to content

Commit

Permalink
fix: Mark delete as prefix expression rather than a dedicated stateme…
Browse files Browse the repository at this point in the history
…nt (#889)

Looking at the ethereum/solidity's code it seems it has been that way
since always; it's de facto an assignment expression with rvalue being
an initial value for the type of lvalue.
  • Loading branch information
Xanewok authored Mar 12, 2024
1 parent 4d227f4 commit ce5050f
Show file tree
Hide file tree
Showing 50 changed files with 154 additions and 181 deletions.
5 changes: 5 additions & 0 deletions .changeset/nine-boxes-vanish.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@nomicfoundation/slang": patch
---

Support `delete` as an expression rather than a statement
14 changes: 4 additions & 10 deletions crates/solidity/inputs/language/src/definition.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2787,7 +2787,6 @@ codegen_language_macros::compile!(Language(
EnumVariant(reference = DoWhileStatement),
EnumVariant(reference = ContinueStatement),
EnumVariant(reference = BreakStatement),
EnumVariant(reference = DeleteStatement),
EnumVariant(reference = ReturnStatement),
EnumVariant(reference = ThrowStatement, enabled = Till("0.5.0")),
EnumVariant(reference = EmitStatement, enabled = From("0.4.21")),
Expand Down Expand Up @@ -3049,15 +3048,6 @@ codegen_language_macros::compile!(Language(
arguments = Required(ArgumentsDeclaration),
semicolon = Required(Semicolon)
)
),
Struct(
name = DeleteStatement,
error_recovery = FieldsErrorRecovery(terminator = semicolon),
fields = (
delete_keyword = Required(DeleteKeyword),
expression = Required(Expression),
semicolon = Required(Semicolon)
)
)
]
),
Expand Down Expand Up @@ -3371,6 +3361,10 @@ codegen_language_macros::compile!(Language(
model = Prefix,
enabled = Till("0.5.0"),
fields = (operator = Required(Plus))
),
PrecedenceOperator(
model = Prefix,
fields = (operator = Required(DeleteKeyword))
)
]
),
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.

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

This file was deleted.

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.

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

32 changes: 0 additions & 32 deletions crates/solidity/outputs/npm/package/src/ast/generated/ast_types.ts

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

2 changes: 0 additions & 2 deletions crates/solidity/outputs/npm/package/src/generated/index.d.ts

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

5 changes: 0 additions & 5 deletions crates/solidity/outputs/spec/generated/grammar.ebnf

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.

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

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Source: >
Errors: # 1 total
- >
Error: Expected AddressKeyword or AssemblyKeyword or BoolKeyword or BreakKeyword or ByteKeyword or BytesKeyword or CloseBrace or ContinueKeyword or DecimalLiteral or DeleteKeyword or DoKeyword or DoubleQuotedHexStringLiteral or DoubleQuotedStringLiteral or EmitKeyword or FalseKeyword or FixedKeyword or ForKeyword or FunctionKeyword or HexLiteral or Identifier or IfKeyword or IntKeyword or MappingKeyword or NewKeyword or OpenBrace or OpenBracket or OpenParen or ReturnKeyword or SingleQuotedHexStringLiteral or SingleQuotedStringLiteral or StringKeyword or TrueKeyword or UfixedKeyword or UintKeyword or WhileKeyword.
Error: Expected AddressKeyword or AssemblyKeyword or BoolKeyword or BreakKeyword or ByteKeyword or BytesKeyword or CloseBrace or ContinueKeyword or DecimalLiteral or DoKeyword or DoubleQuotedHexStringLiteral or DoubleQuotedStringLiteral or EmitKeyword or FalseKeyword or FixedKeyword or ForKeyword or FunctionKeyword or HexLiteral or Identifier or IfKeyword or IntKeyword or MappingKeyword or NewKeyword or OpenBrace or OpenBracket or OpenParen or ReturnKeyword or SingleQuotedHexStringLiteral or SingleQuotedStringLiteral or StringKeyword or TrueKeyword or UfixedKeyword or UintKeyword or WhileKeyword.
╭─[crates/solidity/testing/snapshots/cst_output/Block/unchecked/input.sol:1:3]
1 │ { unchecked { x = 1; } }
Expand Down
Loading

0 comments on commit ce5050f

Please sign in to comment.