You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
but as with quote, the compiler will warn that Baz is unused within Foo, and anything that uses my_quote will then error on Baz being undefined
as-is, the user will have to put the alias where it belongs inside my_quote, which styler is just fine with and will leave be. still, i'd like styler to not leave a codebase uncompilable, even if it just requires a simple human fix
Fix
I see two possible
never go into do blocks of unknown parents looking for liftable aliases (allowlist all kernel forms and nothing else)
when a do-block contains a module directive, assume that it's equivalent to a quote block and back out of it
there are pros and cons to each, but 2 probably gives the more correct result, with the downside being a more complex look-ahead implementation. actually, the real win might be doing a combination of both: when encounter directives in a nested scope, figure out if it's a known block parent. if it is, carry on. if it's not, assume this works as a quote does and don't lift
The text was updated successfully, but these errors were encountered:
novaugust
changed the title
lifting outside of user-defined macros can break scoping
lifting from within user-defined macros can break compilation
Mar 19, 2024
Versions
currently on main, but 0.12 when it gets cut
Example Input
lifting is smart enough to not interact with
quote
children, but user-defined macros can hide that that's occurring.results in:
but as with quote, the compiler will warn that
Baz
is unused withinFoo
, and anything that usesmy_quote
will then error onBaz
being undefinedas-is, the user will have to put the alias where it belongs inside
my_quote
, which styler is just fine with and will leave be. still, i'd like styler to not leave a codebase uncompilable, even if it just requires a simple human fixFix
I see two possible
quote
block and back out of itthere are pros and cons to each, but 2 probably gives the more correct result, with the downside being a more complex look-ahead implementation. actually, the real win might be doing a combination of both: when encounter directives in a nested scope, figure out if it's a known block parent. if it is, carry on. if it's not, assume this works as a quote does and don't lift
The text was updated successfully, but these errors were encountered: