Commit Graph

4 Commits (29000c990c82a8b4b904c05919f7e7ed96f27918)

Author SHA1 Message Date
Phil Hazelden 29000c990c Support promoted type applications.
Closes #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.
2023-04-24 15:47:42 +00:00
Lennart Spitzner dafaa8cab8 Improve block-comment behaviour (newlines after or not) 2023-04-22 19:54:24 +00:00
Lennart Spitzner c58bf7b845 Implement extension support - OverloadedRecordDot 2023-04-22 19:54:24 +00:00
Lennart Spitzner f7de67892b Support and use nested file structure for tests 2023-04-22 19:54:24 +00:00