From 907f362ab59cc03c81f6fbcb41657dad6dd5b15d Mon Sep 17 00:00:00 2001 From: Evan Rutledge Borden Date: Sun, 23 Jun 2019 12:06:06 -0500 Subject: [PATCH] Add support for OverloadedLabels `OverloadedLabels` is a simple enough extension to parse and format. It is becoming more common with use of `generic-lens`. Since it can be treated as a `HsVar` its implementation only requires using `docLit`, along with some marshalling for dealing with `FastString`. --- src-literatetests/14-extensions.blt | 10 ++++++++++ .../Haskell/Brittany/Internal/Layouters/Expr.hs | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src-literatetests/14-extensions.blt b/src-literatetests/14-extensions.blt index e403568..12facda 100644 --- a/src-literatetests/14-extensions.blt +++ b/src-literatetests/14-extensions.blt @@ -130,3 +130,13 @@ func = do hello |] pure True + +############################################################################### +## OverloadedLabels +#test bare label +{-# LANGUAGE OverloadedLabels #-} +foo = #bar + +#test applied and composed label +{-# LANGUAGE OverloadedLabels #-} +foo = #bar . #baz $ fmap #foo xs diff --git a/src/Language/Haskell/Brittany/Internal/Layouters/Expr.hs b/src/Language/Haskell/Brittany/Internal/Layouters/Expr.hs index 74a87af..8a499f2 100644 --- a/src/Language/Haskell/Brittany/Internal/Layouters/Expr.hs +++ b/src/Language/Haskell/Brittany/Internal/Layouters/Expr.hs @@ -55,9 +55,9 @@ layoutExpr lexpr@(L _ expr) = do HsRecFld{} -> do -- TODO briDocByExactInlineOnly "HsRecFld" lexpr - HsOverLabel{} -> do - -- TODO - briDocByExactInlineOnly "HsOverLabel{}" lexpr + HsOverLabel NoExt _reboundFromLabel name -> + let label = FastString.unpackFS name + in docLit . Text.pack $ '#' : label HsIPVar{} -> do -- TODO briDocByExactInlineOnly "HsOverLabel{}" lexpr