ghc-9.12: The GHC API
Copyright(c) The University of Glasgow 2001
LicenseBSD-style (see the file LICENSE)
MaintainerJeffrey Young <jeffrey.young@iohk.io> Luite Stegeman <luite.stegeman@iohk.io> Sylvain Henry <sylvain.henry@iohk.io> Josh Meredith <josh.meredith@iohk.io>
Stabilityexperimental
Safe HaskellNone
LanguageGHC2021

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

Documentation

newtype Ident Source #

A newtype wrapper around FastString for JS identifiers.

Constructors

TxtI 

Fields

Instances

Instances details
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

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

Binary Ident Source # 
Instance details

Defined in GHC.StgToJS.Object

Outputable Ident Source # 
Instance details

Defined in GHC.JS.Ident

Methods

ppr :: Ident -> SDoc Source #

Show Ident Source # 
Instance details

Defined in GHC.JS.Ident

Methods

showsPrec :: Int -> Ident -> ShowS #

show :: Ident -> String #

showList :: [Ident] -> ShowS #

Eq Ident Source # 
Instance details

Defined in GHC.JS.Ident

Methods

(==) :: Ident -> Ident -> Bool #

(/=) :: Ident -> Ident -> Bool #

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.