Skip to content

macros.newLit now preserves named vs unnamed tuples #14720

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

Merged
merged 2 commits into from
Jun 19, 2020

Conversation

timotheecour
Copy link
Member

@timotheecour timotheecour commented Jun 18, 2020

CI failure unrelated: #14685

@timotheecour timotheecour force-pushed the pr_14688_newLit_tuple_takeover branch from 35fc8d5 to 8511529 Compare June 18, 2020 20:40
@timotheecour timotheecour requested a review from Araq June 18, 2020 21:31
@Araq Araq merged commit 9c42ae9 into nim-lang:devel Jun 19, 2020
@timotheecour timotheecour deleted the pr_14688_newLit_tuple_takeover branch June 19, 2020 07:55
## use -d:nimHasWorkaround14720 to restore behavior prior to PR, forcing
## a named tuple even when `arg` is unnamed.
result = nnkTupleConstr.newTree
when defined(nimHasWorkaround14720) or isNamedTuple(T):
Copy link
Member

@zah zah Jun 19, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sometimes, I've thought that it would be nice if the compiler has a generic way to check for the presence of a bug fix (a bit like the generic since mechanism).

Right how, when I encounter an issue, I often leave a TODO comment in the code with a link to the filed issue. If each release of the compiler was storing internally an integer set of all the fixed issues, it would have been possible to write the following code:

when not hasFix(12231):
  # some work-around here
else:
  {.fatal: "The work-around can be removed now".}

Copy link
Member Author

@timotheecour timotheecour Jun 19, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@zah

  • this would not have helped here, where a bugfix causes some code relying on the bug to fail (see ggplotnim)
  • nim already has a mechanism for that using nimHasFoo (see condsyms.nim), and it's strictly more flexible than an issue number, because it gives you freedom to specify what was fixed; eg if:
    bug 1234 contains 2 sub issues foo and bar, you can have a nim commit with: nimHasFix1234Foo(ornimHasFixFoo`)

see timotheecour#317 for the detailed proposal

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there is such a library in rust: you can do it as a macro

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can't find it :( but it checks the issue tracker on compile time e.g. in CI iirc. it's cool

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry, it seems its blocked!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants