-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
arguments of typed macro leak into outer scope #4547
Comments
Yes, symbol table modifications are not undone after the type matching process, hence you need to use |
just in case someone sees this one year later, it is still the same problem. |
If we can't fix it, maybe we should document this broken behavior. |
|
metagn
added a commit
to metagn/Nim
that referenced
this issue
Aug 27, 2023
closes nim-lang#12582, closes nim-lang#19552, closes nim-lang#2465, closes nim-lang#4596, closes nim-lang#15246, closes nim-lang#12683, closes nim-lang#7889, closes nim-lang#4547, closes nim-lang#12415, closes nim-lang#2002, closes nim-lang#1771, closes nim-lang#5121 The test for nim-lang#5648 is also moved into its own test from `types/tissues_types` due to not being joinable.
narimiran
pushed a commit
that referenced
this issue
Sep 18, 2023
* test case haul for old generic/template/macro issues closes #12582, closes #19552, closes #2465, closes #4596, closes #15246, closes #12683, closes #7889, closes #4547, closes #12415, closes #2002, closes #1771, closes #5121 The test for #5648 is also moved into its own test from `types/tissues_types` due to not being joinable. * fix template gensym test (cherry picked from commit c19fd69)
narimiran
pushed a commit
that referenced
this issue
Sep 18, 2023
* test case haul for old generic/template/macro issues closes #12582, closes #19552, closes #2465, closes #4596, closes #15246, closes #12683, closes #7889, closes #4547, closes #12415, closes #2002, closes #1771, closes #5121 The test for #5648 is also moved into its own test from `types/tissues_types` due to not being joinable. * fix template gensym test (cherry picked from commit c19fd69)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I was trying to implement a macro that transforms a value declaration into a lazy initialized variable, and I realized, that the ast that was passed into the macro, is not properly replaced by the result of the macro.
As you can see, the macro
lazy
has an argument with a let declarationlet y =
. But the let part is not part of the output of the macro anymore. Therefore the last two lines should refuse to compile, because there is no valuey
anymore. Instead the nim compiler accepts this without problems, but then generates invalid c code:Another side effect is that an expression
let y = 28
after the macro call yieldsError: redefinition of 'y'
and I can't call the proceduregety
justy
.redefinition of 'y'
The text was updated successfully, but these errors were encountered: