Incorrect warning: nonexistent __x variable is shadowed #476
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Created by: brainiacfive
I get a compiler warning
I am not using __x in my source. Tried to eliminate the String include from it, only Option left, but it throws the same warning; so it would not be include conflict. No other includes.
Looks like a compiler issue to me. Will provided a minimal source example later. Maybe you have an idea already from this stub notice.
Created by: brainiacfive
is verbatim the warning, not a placeholder I inserted.
Created by: marc0olo
@brainiacfive this is happening in a (currently) private contract, right?
if you can't provide a minimal example right now you could maybe invite @ghallak and/or @radrow to the repo to check with the contract where the compiler currently produces this warning
Created by: hanssv
I think the compiler uses the variable
__xwhen it desugars some of the Map-syntax - could be something 'interesting' going on there.Created by: hanssv
is a small example capturing the same problem - the compiled code is correct in this case, but that might be luck (cc @radrow and @ghallak )
Created by: brainiacfive
Much appreciated. I saw more warnings using
__xmeanwhile; in folds.Do you know which variable in your example is the first use of
__xthat would get shadowed by which other variable that is the second use? I'd be checking for patterns of that in the contract source to make sure it is harmless.Created by: radrow
It's a bug caused by running code analysis on desugared code. Nothing to worry about. We'll take a look and fix it soon.
Created by: radrow
If you are worried though, or if it may impact something serious, you can use
aesophia_cliwithpp_asmto check if the function is compiled correctly. The assembler should be fairly readable.Created by: brainiacfive
Thank you, will do!
Created by: brainiacfive
The asm code is fascinating but not something to crack on the fly. Can you @radrow @hanssv share what sugar is causing the use of
__xso I can change the code to avoid it? I assume a nesting of scopes is a prerequisite for the effect to happen. So I should be able to eliminate the select places this could be happening. I'd rather have this evened out, thanks!Created by: brainiacfive
Tried with replacing
with
On @hanssv recommendation, but so far no luck.
Created by: hanssv
You need to change all five of them, and indeed it does workaround the problem.
Created by: hanssv
I think the concrete issue has been worked around - as for the compiler, I think using
__xeverywhere might be a bit too simplistic 🙈 - and it should be fixed eventually.