ghc-lib-parser-9.12.2.20250421: The GHC API, decoupled from GHC versions

Copyright | (c) The University of Glasgow 2001
License | BSD-style (see the file LICENSE)
Maintainer | Jeffrey Young <jeffrey.young@iohk.io> Luite Stegeman <luite.stegeman@iohk.io> Sylvain Henry <sylvain.henry@iohk.io> Josh Meredith <josh.meredith@iohk.io>
Stability | experimental
Safe Haskell | Ignore
Language | GHC2021

GHC.JS.Ident

Description

- Domain and Purpose

  GHC.JS.Ident defines identifiers for the JS backend. We keep this module separate to prevent coupling between GHC and the backend and between unrelated modules is the JS backend.

- Consumers

  The entire JavaScript Backend consumes this module including modules in GHC.JS.* and modules in GHC.StgToJS.*

- Additional Notes

  This module should be kept as small as possible. Anything added to it will be coupled to the JS backend EDSL and the JS Backend including the linker and rts. You have been warned.

Synopsis

- newtype Ident = TxtI {
  - identFS :: FastString
  }
- name :: FastString -> Ident

# Documentation

newtype Ident Source #

A newtype wrapper around `FastString` for JS identifiers.

Constructors

TxtI |

Fields

- identFS :: FastString

#### Instances

Instances details

Show Ident Source # |
Instance details Defined in GHC.JS.Ident Methods showsPrec :: Int -> Ident -> ShowS Source # show :: Ident -> String Source # showList :: [Ident] -> ShowS Source #
JVarMagic Ident Source # |
Instance details Defined in GHC.JS.Make Methods fresh :: JSM Ident Source #
ToJExpr Ident Source # |
Instance details Defined in GHC.JS.Make Methods toJExpr :: Ident -> JStgExpr Source # toJExprFromList :: [Ident] -> JStgExpr Source #
JsToDoc Ident Source # |
Instance details Defined in GHC.JS.Ppr Methods jsToDocR :: JsRender doc => RenderJs doc -> Ident -> doc Source #
Uniquable Ident Source # |
Instance details Defined in GHC.JS.Ident Methods getUnique :: Ident -> Unique Source #
Binary Ident Source # |
Instance details Defined in GHC.StgToJS.Object Methods put_ :: WriteBinHandle -> Ident -> IO () Source # put :: WriteBinHandle -> Ident -> IO (Bin Ident) Source # get :: ReadBinHandle -> IO Ident Source #
Outputable Ident Source # |
Instance details Defined in GHC.JS.Ident Methods ppr :: Ident -> SDoc Source #
Eq Ident Source # |
Instance details Defined in GHC.JS.Ident Methods (==) :: Ident -> Ident -> Bool Source # (/=) :: Ident -> Ident -> Bool Source #

name :: FastString -> Ident Source #

To give a thing a name is to have power over it. This smart constructor serves two purposes: first, it isolates the JS backend from the rest of GHC. The backend should not explicitly use types provided by GHC but instead should wrap them such as we do here. Second it creates a symbol in the JS backend, but it does not yet give that symbols meaning. Giving the symbol meaning only occurs once it is used with a combinator from `GHC.JS.Make`.