-- Copyright 2019 Google LLC -- -- Use of this source code is governed by a BSD-style -- license that can be found in the LICENSE file or at -- https://developers.google.com/open-source/licenses/bsd -- | This module defines custom types for defining names of various -- syntax terms. -- -- These types are all instances of 'Data.String.IsString'. For ease of use, -- we recommend enabling the @OverloadedStrings@ extension. module GHC.SourceGen.Name ( -- * RdrNameStr RdrNameStr(..) , RawNameSpace(..) , rdrNameStrToString , qual , unqual -- * OccNameStr , OccNameStr , occNameStrToString , occNameStrNamespace -- ModuleNameStr , ModuleNameStr(..) , moduleNameStrToString ) where import FastString (unpackFS) import Module (moduleNameString) import GHC.SourceGen.Name.Internal unqual :: OccNameStr -> RdrNameStr unqual = UnqualStr qual :: ModuleNameStr -> OccNameStr -> RdrNameStr qual = QualStr moduleNameStrToString :: ModuleNameStr -> String moduleNameStrToString = moduleNameString . unModuleNameStr occNameStrToString :: OccNameStr -> String occNameStrToString (OccNameStr _ s) = unpackFS s occNameStrNamespace :: OccNameStr -> RawNameSpace occNameStrNamespace (OccNameStr n _) = n rdrNameStrToString :: RdrNameStr -> String rdrNameStrToString (UnqualStr o) = occNameStrToString o rdrNameStrToString (QualStr m o) = moduleNameStrToString m ++ '.' : occNameStrToString o