packages feed

scrod-0.2026.2.21: source/library/Scrod/Core/Visibility.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingVia #-}

module Scrod.Core.Visibility where

import qualified GHC.Generics as Generics
import qualified Scrod.Json.ToJson as ToJson
import qualified Scrod.Schema as Schema

-- | The visibility of an item with respect to the module's export list.
data Visibility
  = -- | In the export list (directly named, via subordinates like
    -- @Foo(Bar)@, or via wildcard like @Foo(..)@), or every top-level
    -- item when there is no export list.
    Exported
  | -- | Always visible regardless of the export list (class instances,
    -- standalone deriving, derived instances, rules, defaults,
    -- annotations, splices).
    Implicit
  | -- | Not in the export list.
    Unexported
  deriving (Eq, Generics.Generic, Ord, Show)
  deriving (ToJson.ToJson, Schema.ToSchema) via Generics.Generically Visibility