-
-
Notifications
You must be signed in to change notification settings - Fork 159
Language.Nix: improve and test Identifier handling #669
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
Conversation
The representation with Strings is tricky of course since identifiers in Nix are technically byte strings (if you allow quoting). For our purposes, it is practical to assume that all identifiers are ASCII or UTF-8 encoded. With quoting, we can represent any Unicode character except '\0'.
Instead of properties, give some examples that are hopefully clearer. We can keep the properties and actually execute them as part of a test suite.
It doesn't make sense to prescribe some kind of “correct” behavior with NUL bytes, so it's best not to test it.
Currently this is practically > 95% which isn't great. Presumably, the examples for simple identifiers are very short as well.
With this, we can get below 70% generated identifiers that don't need quoting.
c99580b to
80b555b
Compare
|
Some comments:
|
wolfgangwalther
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nixpkgs diff looks good.
Also looked through the PR, from what I understand, it looks good to me. Never used QuickCheck, so it's more learning that anything else here.
maralorn
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Love it!
80b555b to
96cb931
Compare
This relates to #164, as there are packages like `assert` which clash with Nix keywords. However, this does not actually provide us with a solution since quoting isn't possible in some contexts (e.g. function arguments).
This increases correctness as toNixName is already used to generate the package expression arguments. If toNixName and attr were to diverge, packages would fail to resolve their dependencies correctly. A side effect of this change is that `pPrint attr` only quotes attribute names as needed, resulting in a huge diff for hackage-packages.nix.
96cb931 to
17586e3
Compare
No description provided.