-
Notifications
You must be signed in to change notification settings - Fork 6
Impure inspection #199
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Trinketer22
wants to merge
32
commits into
ton-blockchain:main
Choose a base branch
from
Trinketer22:impure_inspection
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Impure inspection #199
Conversation
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
- Make semicolon in expression_statement mandatory - Add ternary declaration
Fixes var declarations in tensor. Before var test = foo(); ;; is var declaration var (a, b) = bar(); ;; Is not (int a, int b) = bar(); ;; Is not either. Now a and b are typed var_declaration and also var (_, b) = foo() is allowed
970a6a9 to
a642a97
Compare
Now deep value reference is supported. ``` var a = bar(); int b = 100; int c = foo(a); return c; ``` bar will not be considered dropped call
Mainly for tests
This reverts commit 84d8cef. Since theese files are dropped in master
Member
Author
Update
TODO
|
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.
Impure inspection
Goal
To detect call to functions without impure specifier that are subject for removal by compiler.
Gotchas
Logic of dropping non-impure calls is fairly complicated.
In order for such call to stay compiled, it's result has to be referenced in other impure call or end up as a result of return statement.
Side effects
Grammar and declaration search fixes
Before, only single typed declaration was getting
var_declarationtype, thereforeinspections like
UnusedVariableand any other kind of declaration/reference analysis was very limited.Now all kind of declarations are supported:
BindResolver
In order to implement output tracking, bind resolver/destructor for FunC language is required,
and therefore it's part of this commit.
TODO
Chained assingment
Is treated as it won't dropped and that is correct
However, in case of
Will currently state that foo is required to have impure specifier.
It is asking for the SSA, and that's probably the way to go.
I'm planing to add it
e2e test scenarios.
Currently only tested manually.