{-# LANGUAGE PatternSynonyms #-}
{-# Language DeriveFoldable #-}
{-# LANGUAGE Safe #-}
{-# options_ghc -w #-}

-- | A simple let expression, to ensure the layout is detected
-- With some haddock in the top
{- And a normal
   multiline comment too -}
  module {- brah -}  LetExprSemi    ( foo -- foo does ..
                                    , bar -- bar does ..
                                    , Baz () -- baz does ..
                                 , Ba   ( ..),Ca(Cc,Cd)   ,
                                     bbb ,  aaa
                                  , module  Data.List
                                    , pattern  Bar
                                    )
    where
{
import Data.List
-- A comment in the middle
; import {-# SOURCE #-} BootImport ( Foo(..) ) ;
import {-# SOURCE  #-} safe   qualified  BootImport   as    BI
;;; import qualified Data.Map as {- blah -}  Foo.Map;

import Control.Monad  (   )  ;
import Data.Word (Word8);
import Data.Tree hiding  (  drawTree   ) ;

  ; import qualified Data.Maybe as M hiding    ( maybe  , isJust  )
;

-- comment
foo = let x = 1
          y = 2
      in x + y
;
bar = 3;
bbb x
 | x == 1 = ()
 | otherwise = ()

;
aaa [] _    = 0;
aaa x  _unk = 1
;
x `ccc` 1 = x + 1;
x `ccc` y = x + y
;
x !@# y = x + y
;
data Baz = Baz1 | Baz2
;
data Ba = Ba | Bb
;
data Ca = Cc | Cd
;
pattern Foo a <- RealFoo a ;
pattern Bar a <- RealBar a
;
data Thing = RealFoo Thing | RealBar Int
}


