-
Notifications
You must be signed in to change notification settings - Fork 68
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
Brittany introduces space in TypeApplications with ticked-constructor #370
Labels
Comments
ChickenProp
added a commit
to ChickenProp/brittany
that referenced
this issue
Nov 1, 2022
Closes lspitzner#370. Up to GHC 8.10, foo @ 'Bar was a valid type application. In GHC 9 it's not, which means brittany needs to allow foo @'Bar which it now does. The reason the space was needed was to allow a promoted type variable at the head of a type-level list. That is, '['Foo] is invalid syntax, because it initially parses as the character `'['`. So the promoted type variable was always given a separator at the beginning, and we'd get '[ 'Foo] which was valid. Now we handle this case by specifically examining the head of a type-level list; if it's promoted we introduce spaces, so '[ 'Foo ] '[Foo] I've added tests for this and some related cases. In doing so I noticed that unnecessary spaces get added in front of commas in these lists; I believe that's a separate bug, and I've written a comment explaining why it happens, but I haven't tried to fix it. I'm not sure when the first alternates in the `FirstLastSingleton` and `FirstLast` branches would ever be hit, so I'm not entirely sure if the separators are necessary there. But since `docSeparator` disappears at the end of a line and merges with adjacent separators, they should be harmless.
ChickenProp
added a commit
to ChickenProp/brittany
that referenced
this issue
Nov 1, 2022
Closes lspitzner#370. Up to GHC 8.10, foo @ 'Bar was a valid type application. In GHC 9 it's not, which means brittany needs to allow foo @'Bar which it now does. The reason the space was needed was to allow a promoted type variable at the head of a type-level list. That is, '['Foo] is invalid syntax, because it initially parses as the character `'['`. So the promoted type variable was always given a separator at the beginning, and we'd get '[ 'Foo] which was valid. Now we handle this case by specifically examining the head of a type-level list; if it's promoted we introduce spaces, so '[ 'Foo ] '[Foo] I've added tests for this and some related cases. In doing so I noticed that unnecessary spaces get added in front of commas in these lists; I believe that's a separate bug, and I've written a comment explaining why it happens, but I haven't tried to fix it. I'm not sure when the first alternates in the `FirstLastSingleton` and `FirstLast` branches would ever be hit, so I'm not entirely sure if the separators are necessary there. But since `docSeparator` disappears at the end of a line and merges with adjacent separators, they should be harmless.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Brittany introduces an extra space in
@'Bar
, making it@ 'Bar
. It handles@Bar
correctly.This has been happening for a number of versions, but it seems GHC 8.10 has been accepting it as still a
TypeApplication
. GHC 9.0 (more reasonably, IMO) sees it as trying to use a function named(@)
, which fails as out of scope.brittany.yaml
The text was updated successfully, but these errors were encountered: