fix(parser): treat persistent/temporary/instance as identifiers for non-Soroban targets#1861
Open
sridhar-panigrahi wants to merge 3 commits intohyperledger-solang:mainfrom
Conversation
…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>
Author
|
@salaheldinsoliman , please let me know your thoughts on this ! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1847.
PR #1664 added
persistent,temporary, andinstanceas 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
sorobanflag on theLexerstruct. When the flag is off (default), the three tokens fall back to plain identifiers. A newparse_soroban()entry point enables the flag for Soroban targets;semadispatches to the right parser based on the compilation target.Two regression tests cover both modes.