================================================================================
module: starting on first line
================================================================================
module A where

---

(haskell module: (module) (where))

================================================================================
module: starting on second line
================================================================================

module A where

---

(haskell (module) (where))

================================================================================
module: exports empty
================================================================================

module A () where

---

(haskell (module) (exports) (where))

================================================================================
module: exports regular
================================================================================

module A (
  a',
  A,
  A(..),
  A(a, a),
) where

---

(haskell
 (module)
 (exports
  (export (variable))
  (comma)
  (export (type))
  (comma)
  (export (type) (export_names (all_names)))
  (comma)
  (export (type) (export_names (variable) (comma) (variable))) (comma))
 (where))

================================================================================
module: exports symbolic
================================================================================

module A (
  (<>)((:<>), A),
) where

---

(haskell
 (module)
 (exports (export (type_operator) (export_names (constructor_operator) (comma) (constructor))) (comma))
 (where))

================================================================================
module: exports type
================================================================================

module A (
  type A,
  type (<>),
) where

---

(haskell
 (module)
 (exports
  (export (namespace) (type))
  (comma)
  (export (namespace) (type_operator))
  (comma))
 (where))

================================================================================
module: exports pattern
================================================================================

module A (
  pattern A,
  pattern (<>),
) where

---

(haskell
 (module)
 (exports
  (export (namespace) (type))
  (comma)
  (export (namespace) (type_operator))
  (comma))
 (where))

================================================================================
module: exports module
================================================================================

module A (
  a,
  module A,
  module A.A.A,
) where

---

(haskell
 (module)
 (exports
  (export (variable))
  (comma)
  (export (module))
  (comma)
  (export (qualified_module (module) (module) (module)))
  (comma))
 (where))

================================================================================
module: exports qualified
================================================================================

module A (
  A.A.a,
  type (A.A.++),
  type (A.A.:++),
  A.A.A,
  A.A.A((<=<), (:++), A, a),
  type A.A((>>), A),
  pattern A.A((>>), A),
) where

---

(haskell
 (module)
 (exports
  (export (qualified_variable (module) (module) (variable)))
  (comma)
  (export (namespace) (qualified_type_operator (module) (module) (type_operator)))
  (comma)
  (export (namespace) (qualified_constructor_operator (module) (module) (constructor_operator)))
  (comma)
  (export (qualified_type (module) (module) (type)))
  (comma)
  (export
   (qualified_type (module) (module) (type))
   (export_names (operator) (comma) (constructor_operator) (comma) (constructor) (comma) (variable)))
  (comma)
  (export (namespace) (qualified_type (module) (type)) (export_names (operator) (comma) (constructor)))
  (comma)
  (export (namespace) (qualified_type (module) (type)) (export_names (operator) (comma) (constructor)))
  (comma))
 (where))

================================================================================
module: qualified
================================================================================

module A.A'.A where

---

(haskell (qualified_module (module) (module) (module)) (where))

================================================================================
module: export minus
================================================================================

module A (type(-), (-)) where

---

(haskell (module) (exports (export (namespace) (type_operator)) (comma) (export (type_operator))) (where))
