Skip to content

fix(parser): treat persistent/temporary/instance as identifiers for non-Soroban targets#1861

Open
sridhar-panigrahi wants to merge 3 commits intohyperledger-solang:mainfrom
sridhar-panigrahi:fix/soroban-keyword-parser-incompatibility
Open

fix(parser): treat persistent/temporary/instance as identifiers for non-Soroban targets#1861
sridhar-panigrahi wants to merge 3 commits intohyperledger-solang:mainfrom
sridhar-panigrahi:fix/soroban-keyword-parser-incompatibility

Conversation

@sridhar-panigrahi
Copy link
Copy Markdown

Fixes #1847.

PR #1664 added persistent, temporary, and instance as reserved keywords globally, which broke standard Solidity code using those words as identifiers on non-Soroban targets.

The fix makes the lexer target-aware via a soroban flag on the Lexer struct. When the flag is off (default), the three tokens fall back to plain identifiers. A new parse_soroban() entry point enables the flag for Soroban targets; sema dispatches to the right parser based on the compilation target.

Two regression tests cover both modes.

…on-Soroban targets

PR hyperledger-solang#1664 introduced three Soroban-specific storage type keywords
(persistent, temporary, instance) directly into the global keyword map,
making them reserved words for all targets. This breaks standard Solidity
code that happens to use these common English words as variable or
function names.

The fix makes the lexer target-aware: a new `soroban` flag is added to
`Lexer`. When the flag is false (the default), the three tokens are
returned as plain `Identifier` tokens rather than keyword tokens.
`parse_soroban()` is added to `solang-parser` as a counterpart to the
existing `parse()` function; the semantic analysis layer now calls the
appropriate variant based on the compilation target.

Two new parser-level tests verify the behaviour in both modes.

Fixes hyperledger-solang#1847

Signed-off-by: Shridhar Panigrahi <sridharpanigrahi2006@gmail.com>
Signed-off-by: Shridhar Panigrahi <sridharpanigrahi2006@gmail.com>
@sridhar-panigrahi
Copy link
Copy Markdown
Author

@salaheldinsoliman , please let me know your thoughts on this !

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.

Solang parser incompatibility from introducing Soroban storage types

1 participant