OptionPragma is renamed to the more descriptive ModulePragma, and adds a constructor AnnModulePragma for handling ANN pragmas preceding module header.
➕ Add instances for Eq/Ord/Data/Typeable for Fixity.
➕ Add 'parseFileWithComments' and 'parseFileContentsWithComments' to L.H.Exts .
More informative error messages when HSX tags are mismatched.
- Don't insert redundant parentheses around record constructions and updates.
- 🛠 Fix three bugs with the handling of ANN. I must have been really tired when implementing that support.
➕ Add an instance Show Fixity (derived).
👌 Support for the new ANN and INLINE_CONLIKE pragmas.
Export knownExtensions from .Extension.
✂ Remove support for CFILES and INCLUDE pragmas. The support wasn't correct anyway, as it assumed the pragmas appeared at the top of files. As CFILES/INCLUDE pragmas can (and do) appear anywhere, there's no hope to support them in the AST. Better to remove the support altogether. Files with CFILES/INCLUDE pragmas can still be parsed of course, but those pragmas will be handled as comments.
⚡️ Parsing with ignoreLinePragmas = False now correctly updates the file name.
👍 Allow the whole SPECIALISE/INLINE family of pragmas in instance declarations. The InsInline constructor is removed, and is now represented by InsDecl (InlineSig ...).
🛠 Fix a bug with line numbering and quasi quotes, and a similar one with line numbering and CDATA.
🛠 Fix a few minor bugs in the exactPrinter.
🛠 Fix the strange handling of so called strings in LINE pragmas.
- 🛠 Fixes a bug in lexing LINE pragmas (used when ignoreLinePragmas is set to False).
- UnicodeSyntax now also enables the forall symbol (U+2200).
Operators defined on the form
opb) c = ...
could not be handled by the (annotated) AST, nor the parser. I had to change the definition of the AST node for InfixMatch to allow a list of right-hand subpatterns, i.e.
InfixMatch l (Pat l) (Name l) (Pat l) ...
InfixMatch l (Pat l) (Name l) [Pat l] ...
I also had an epiphany and fixed the issue that would arise with exact printing of prefix definitions including parentheses, so that now works too!
- UnicodeSyntax now works not only for identifiers, but also for ->, <- and =>, as well as Arrows arrows and kind stars.
(=~=) turns out to be too general at Functor (for intuitive and not technical reasons), so is specialised to Annotated to closer mirror the original intention.
applyFixities is hoisted to a monad, and now fails on ambiguous infix expressions.
- 🖨 Several small bug fixes in the exact printer, and fail more gracefully if the number of srcInfoPoints doesn't match the needs of the node.