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
__x
when 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
__x
meanwhile; in folds.Do you know which variable in your example is the first use of
__x
that 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_cli
withpp_asm
to 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
__x
so 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
__x
everywhere might be a bit too simplistic 🙈 - and it should be fixed eventually.