Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Language.PureScript
Description
The main compiler module
Synopsis
- data Literal a
- = NumericLiteral (Either Integer Double)
- | StringLiteral PSString
- | CharLiteral Char
- | BooleanLiteral Bool
- | ArrayLiteral [a]
- | ObjectLiteral [(PSString, a)]
- data Module = Module SourceSpan [Comment] ModuleName [Declaration] (Maybe [DeclarationRef])
- data Type a
- = TUnknown a Int
- | TypeVar a Text
- | TypeLevelString a PSString
- | TypeLevelInt a Integer
- | TypeWildcard a WildcardData
- | TypeConstructor a (Qualified (ProperName 'TypeName))
- | TypeOp a (Qualified (OpName 'TypeOpName))
- | TypeApp a (Type a) (Type a)
- | KindApp a (Type a) (Type a)
- | ForAll a TypeVarVisibility Text (Maybe (Type a)) (Type a) (Maybe SkolemScope)
- | ConstrainedType a (Constraint a) (Type a)
- | Skolem a Text (Maybe (Type a)) Int SkolemScope
- | REmpty a
- | RCons a Label (Type a) (Type a)
- | KindedType a (Type a) (Type a)
- | BinaryNoParensType a (Type a) (Type a) (Type a)
- | ParensInType a (Type a)
- data Constraint a = Constraint {
- constraintAnn :: a
- constraintClass :: Qualified (ProperName 'ClassName)
- constraintKindArgs :: [Type a]
- constraintArgs :: [Type a]
- constraintData :: Maybe ConstraintData
- data Options = Options {}
- data Text
- data Name
- data Ident
- type HasCallStack = ?callStack :: CallStack
- data ErrorMessage = ErrorMessage [ErrorMessageHint] SimpleErrorMessage
- data Comment
- type Env = Map ModuleName (SourceSpan, Imports, Exports)
- type Context = [(Ident, SourceType)]
- data Level
- data Role
- data Environment = Environment {
- names :: Map (Qualified Ident) (SourceType, NameKind, NameVisibility)
- types :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind)
- dataConstructors :: Map (Qualified (ProperName 'ConstructorName)) (DataDeclType, ProperName 'TypeName, SourceType, [Ident])
- typeSynonyms :: Map (Qualified (ProperName 'TypeName)) ([(Text, Maybe SourceType)], SourceType)
- typeClassDictionaries :: Map QualifiedBy (Map (Qualified (ProperName 'ClassName)) (Map (Qualified Ident) (NonEmpty NamedDict)))
- typeClasses :: Map (Qualified (ProperName 'ClassName)) TypeClassData
- data Associativity
- data Fixity = Fixity Associativity Precedence
- data Substitution = Substitution {
- substType :: Map Int SourceType
- substUnsolved :: Map Int (UnkLevel, SourceType)
- substNames :: Map Int Text
- data TypeMap = TypeMap {
- umSkolemMap :: Map Int (String, Int, Maybe SourceSpan)
- umUnknownMap :: Map Int Int
- umNextIndex :: Int
- type Unknown = Int
- type Supply = SupplyT Identity
- newtype SupplyT m a = SupplyT {}
- newtype Make a = Make {}
- data SourcePos = SourcePos {}
- data SourceSpan = SourceSpan {}
- newtype OpName (a :: OpNameType) = OpName {}
- data OpNameType
- newtype ProperName (a :: ProperNameType) = ProperName {}
- data ProperNameType
- data Qualified a = Qualified QualifiedBy a
- type SourceType = Type SourceAnn
- data Binder
- = NullBinder
- | LiteralBinder SourceSpan (Literal Binder)
- | VarBinder SourceSpan Ident
- | ConstructorBinder SourceSpan (Qualified (ProperName 'ConstructorName)) [Binder]
- | OpBinder SourceSpan (Qualified (OpName 'ValueOpName))
- | BinaryNoParensBinder Binder Binder Binder
- | ParensInBinder Binder
- | NamedBinder SourceSpan Ident Binder
- | PositionedBinder SourceSpan [Comment] Binder
- | TypedBinder SourceType Binder
- type SourceAnn = (SourceSpan, [Comment])
- type SourceConstraint = Constraint SourceAnn
- newtype ModuleName = ModuleName Text
- data QualifiedBy
- data DataDeclType
- data FunctionalDependency = FunctionalDependency {
- fdDeterminers :: [Int]
- fdDetermined :: [Int]
- data NameKind
- data DataConstructorDeclaration = DataConstructorDeclaration {
- dataCtorAnn :: !SourceAnn
- dataCtorName :: !(ProperName 'ConstructorName)
- dataCtorFields :: ![(Ident, SourceType)]
- data Declaration
- = DataDeclaration SourceAnn DataDeclType (ProperName 'TypeName) [(Text, Maybe SourceType)] [DataConstructorDeclaration]
- | DataBindingGroupDeclaration (NonEmpty Declaration)
- | TypeSynonymDeclaration SourceAnn (ProperName 'TypeName) [(Text, Maybe SourceType)] SourceType
- | KindDeclaration SourceAnn KindSignatureFor (ProperName 'TypeName) SourceType
- | RoleDeclaration !RoleDeclarationData
- | TypeDeclaration !TypeDeclarationData
- | ValueDeclaration !(ValueDeclarationData [GuardedExpr])
- | BoundValueDeclaration SourceAnn Binder Expr
- | BindingGroupDeclaration (NonEmpty ((SourceAnn, Ident), NameKind, Expr))
- | ExternDeclaration SourceAnn Ident SourceType
- | ExternDataDeclaration SourceAnn (ProperName 'TypeName) SourceType
- | FixityDeclaration SourceAnn (Either ValueFixity TypeFixity)
- | ImportDeclaration SourceAnn ModuleName ImportDeclarationType (Maybe ModuleName)
- | TypeClassDeclaration SourceAnn (ProperName 'ClassName) [(Text, Maybe SourceType)] [SourceConstraint] [FunctionalDependency] [Declaration]
- | TypeInstanceDeclaration SourceAnn SourceAnn ChainId Integer (Either Text Ident) [SourceConstraint] (Qualified (ProperName 'ClassName)) [SourceType] TypeInstanceBody
- data DeclarationRef
- = TypeClassRef SourceSpan (ProperName 'ClassName)
- | TypeOpRef SourceSpan (OpName 'TypeOpName)
- | TypeRef SourceSpan (ProperName 'TypeName) (Maybe [ProperName 'ConstructorName])
- | ValueRef SourceSpan Ident
- | ValueOpRef SourceSpan (OpName 'ValueOpName)
- | TypeInstanceRef SourceSpan Ident NameSource
- | ModuleRef SourceSpan ModuleName
- | ReExportRef SourceSpan ExportSource DeclarationRef
- data CaseAlternative = CaseAlternative {}
- data DoNotationElement
- data Expr
- = Literal SourceSpan (Literal Expr)
- | UnaryMinus SourceSpan Expr
- | BinaryNoParens Expr Expr Expr
- | Parens Expr
- | Accessor PSString Expr
- | ObjectUpdate Expr [(PSString, Expr)]
- | ObjectUpdateNested Expr (PathTree Expr)
- | Abs Binder Expr
- | App Expr Expr
- | VisibleTypeApp Expr SourceType
- | Unused Expr
- | Var SourceSpan (Qualified Ident)
- | Op SourceSpan (Qualified (OpName 'ValueOpName))
- | IfThenElse Expr Expr Expr
- | Constructor SourceSpan (Qualified (ProperName 'ConstructorName))
- | Case [Expr] [CaseAlternative]
- | TypedValue Bool Expr SourceType
- | Let WhereProvenance [Declaration] Expr
- | Do (Maybe ModuleName) [DoNotationElement]
- | Ado (Maybe ModuleName) [DoNotationElement] Expr
- | TypeClassDictionary SourceConstraint (Map QualifiedBy (Map (Qualified (ProperName 'ClassName)) (Map (Qualified Ident) (NonEmpty NamedDict)))) [ErrorMessageHint]
- | DeferredDictionary (Qualified (ProperName 'ClassName)) [SourceType]
- | DerivedInstancePlaceholder (Qualified (ProperName 'ClassName)) InstanceDerivationStrategy
- | AnonymousArgument
- | Hole Text
- | PositionedValue SourceSpan [Comment] Expr
- data Guard
- data GuardedExpr = GuardedExpr [Guard] Expr
- data TypeDeclarationData = TypeDeclarationData {
- tydeclSourceAnn :: !SourceAnn
- tydeclIdent :: !Ident
- tydeclType :: !SourceType
- data TypeInstanceBody
- data ValueDeclarationData a = ValueDeclarationData {
- valdeclSourceAnn :: !SourceAnn
- valdeclIdent :: !Ident
- valdeclName :: !NameKind
- valdeclBinders :: ![Binder]
- valdeclExpression :: !a
- data ErrorMessageHint
- = ErrorUnifyingTypes SourceType SourceType
- | ErrorInExpression Expr
- | ErrorInModule ModuleName
- | ErrorInInstance (Qualified (ProperName 'ClassName)) [SourceType]
- | ErrorInSubsumption SourceType SourceType
- | ErrorInRowLabel Label
- | ErrorCheckingAccessor Expr PSString
- | ErrorCheckingType Expr SourceType
- | ErrorCheckingKind SourceType SourceType
- | ErrorCheckingGuard
- | ErrorInferringType Expr
- | ErrorInferringKind SourceType
- | ErrorInApplication Expr SourceType Expr
- | ErrorInDataConstructor (ProperName 'ConstructorName)
- | ErrorInTypeConstructor (ProperName 'TypeName)
- | ErrorInBindingGroup (NonEmpty Ident)
- | ErrorInDataBindingGroup [ProperName 'TypeName]
- | ErrorInTypeSynonym (ProperName 'TypeName)
- | ErrorInValueDeclaration Ident
- | ErrorInTypeDeclaration Ident
- | ErrorInTypeClassDeclaration (ProperName 'ClassName)
- | ErrorInKindDeclaration (ProperName 'TypeName)
- | ErrorInRoleDeclaration (ProperName 'TypeName)
- | ErrorInForeignImport Ident
- | ErrorInForeignImportData (ProperName 'TypeName)
- | ErrorSolvingConstraint SourceConstraint
- | MissingConstructorImportForCoercible (Qualified (ProperName 'ConstructorName))
- | PositionedError (NonEmpty SourceSpan)
- | RelatedPositions (NonEmpty SourceSpan)
- data SimpleErrorMessage
- = InternalCompilerError Text Text
- | ModuleNotFound ModuleName
- | ErrorParsingFFIModule FilePath (Maybe ErrorMessage)
- | ErrorParsingCSTModule ParserError
- | WarningParsingCSTModule ParserWarning
- | MissingFFIModule ModuleName
- | UnnecessaryFFIModule ModuleName FilePath
- | MissingFFIImplementations ModuleName [Ident]
- | UnusedFFIImplementations ModuleName [Ident]
- | InvalidFFIIdentifier ModuleName Text
- | DeprecatedFFIPrime ModuleName Text
- | DeprecatedFFICommonJSModule ModuleName FilePath
- | UnsupportedFFICommonJSExports ModuleName [Text]
- | UnsupportedFFICommonJSImports ModuleName [Text]
- | FileIOError Text IOError
- | InfiniteType SourceType
- | InfiniteKind SourceType
- | MultipleValueOpFixities (OpName 'ValueOpName)
- | MultipleTypeOpFixities (OpName 'TypeOpName)
- | OrphanTypeDeclaration Ident
- | OrphanKindDeclaration (ProperName 'TypeName)
- | OrphanRoleDeclaration (ProperName 'TypeName)
- | RedefinedIdent Ident
- | OverlappingNamesInLet Ident
- | UnknownName (Qualified Name)
- | UnknownImport ModuleName Name
- | UnknownImportDataConstructor ModuleName (ProperName 'TypeName) (ProperName 'ConstructorName)
- | UnknownExport Name
- | UnknownExportDataConstructor (ProperName 'TypeName) (ProperName 'ConstructorName)
- | ScopeConflict Name [ModuleName]
- | ScopeShadowing Name (Maybe ModuleName) [ModuleName]
- | DeclConflict Name Name
- | ExportConflict (Qualified Name) (Qualified Name)
- | DuplicateModule ModuleName
- | DuplicateTypeClass (ProperName 'ClassName) SourceSpan
- | DuplicateInstance Ident SourceSpan
- | DuplicateTypeArgument Text
- | InvalidDoBind
- | InvalidDoLet
- | CycleInDeclaration Ident
- | CycleInTypeSynonym (NonEmpty (ProperName 'TypeName))
- | CycleInTypeClassDeclaration (NonEmpty (Qualified (ProperName 'ClassName)))
- | CycleInKindDeclaration (NonEmpty (Qualified (ProperName 'TypeName)))
- | CycleInModules (NonEmpty ModuleName)
- | NameIsUndefined Ident
- | UndefinedTypeVariable (ProperName 'TypeName)
- | PartiallyAppliedSynonym (Qualified (ProperName 'TypeName))
- | EscapedSkolem Text (Maybe SourceSpan) SourceType
- | TypesDoNotUnify SourceType SourceType
- | KindsDoNotUnify SourceType SourceType
- | ConstrainedTypeUnified SourceType SourceType
- | OverlappingInstances (Qualified (ProperName 'ClassName)) [SourceType] [Qualified (Either SourceType Ident)]
- | NoInstanceFound SourceConstraint [Qualified (Either SourceType Ident)] Bool
- | AmbiguousTypeVariables SourceType [(Text, Int)]
- | UnknownClass (Qualified (ProperName 'ClassName))
- | PossiblyInfiniteInstance (Qualified (ProperName 'ClassName)) [SourceType]
- | PossiblyInfiniteCoercibleInstance
- | CannotDerive (Qualified (ProperName 'ClassName)) [SourceType]
- | InvalidDerivedInstance (Qualified (ProperName 'ClassName)) [SourceType] Int
- | ExpectedTypeConstructor (Qualified (ProperName 'ClassName)) [SourceType] SourceType
- | InvalidNewtypeInstance (Qualified (ProperName 'ClassName)) [SourceType]
- | MissingNewtypeSuperclassInstance (Qualified (ProperName 'ClassName)) (Qualified (ProperName 'ClassName)) [SourceType]
- | UnverifiableSuperclassInstance (Qualified (ProperName 'ClassName)) (Qualified (ProperName 'ClassName)) [SourceType]
- | CannotFindDerivingType (ProperName 'TypeName)
- | DuplicateLabel Label (Maybe Expr)
- | DuplicateValueDeclaration Ident
- | ArgListLengthsDiffer Ident
- | OverlappingArgNames (Maybe Ident)
- | MissingClassMember (NonEmpty (Ident, SourceType))
- | ExtraneousClassMember Ident (Qualified (ProperName 'ClassName))
- | ExpectedType SourceType SourceType
- | IncorrectConstructorArity (Qualified (ProperName 'ConstructorName)) Int Int
- | ExprDoesNotHaveType Expr SourceType
- | PropertyIsMissing Label
- | AdditionalProperty Label
- | OrphanInstance Ident (Qualified (ProperName 'ClassName)) (Set ModuleName) [SourceType]
- | InvalidNewtype (ProperName 'TypeName)
- | InvalidInstanceHead SourceType
- | TransitiveExportError DeclarationRef [DeclarationRef]
- | TransitiveDctorExportError DeclarationRef [ProperName 'ConstructorName]
- | HiddenConstructors DeclarationRef (Qualified (ProperName 'ClassName))
- | ShadowedName Ident
- | ShadowedTypeVar Text
- | UnusedTypeVar Text
- | UnusedName Ident
- | UnusedDeclaration Ident
- | WildcardInferredType SourceType Context
- | HoleInferredType Text SourceType Context (Maybe TypeSearch)
- | MissingTypeDeclaration Ident SourceType
- | MissingKindDeclaration KindSignatureFor (ProperName 'TypeName) SourceType
- | OverlappingPattern [[Binder]] Bool
- | IncompleteExhaustivityCheck
- | ImportHidingModule ModuleName
- | UnusedImport ModuleName (Maybe ModuleName)
- | UnusedExplicitImport ModuleName [Name] (Maybe ModuleName) [DeclarationRef]
- | UnusedDctorImport ModuleName (ProperName 'TypeName) (Maybe ModuleName) [DeclarationRef]
- | UnusedDctorExplicitImport ModuleName (ProperName 'TypeName) [ProperName 'ConstructorName] (Maybe ModuleName) [DeclarationRef]
- | DuplicateSelectiveImport ModuleName
- | DuplicateImport ModuleName ImportDeclarationType (Maybe ModuleName)
- | DuplicateImportRef Name
- | DuplicateExportRef Name
- | IntOutOfRange Integer Text Integer Integer
- | ImplicitQualifiedImport ModuleName ModuleName [DeclarationRef]
- | ImplicitQualifiedImportReExport ModuleName ModuleName [DeclarationRef]
- | ImplicitImport ModuleName [DeclarationRef]
- | HidingImport ModuleName [DeclarationRef]
- | CaseBinderLengthDiffers Int [Binder]
- | IncorrectAnonymousArgument
- | InvalidOperatorInBinder (Qualified (OpName 'ValueOpName)) (Qualified Ident)
- | CannotGeneralizeRecursiveFunction Ident SourceType
- | CannotDeriveNewtypeForData (ProperName 'TypeName)
- | ExpectedWildcard (ProperName 'TypeName)
- | CannotUseBindWithDo Ident
- | ClassInstanceArityMismatch Ident (Qualified (ProperName 'ClassName)) Int Int
- | UserDefinedWarning SourceType
- | UnusableDeclaration Ident [[Text]]
- | CannotDefinePrimModules ModuleName
- | MixedAssociativityError (NonEmpty (Qualified (OpName 'AnyOpName), Associativity))
- | NonAssociativeError (NonEmpty (Qualified (OpName 'AnyOpName)))
- | QuantificationCheckFailureInKind Text
- | QuantificationCheckFailureInType [Int] SourceType
- | VisibleQuantificationCheckFailureInType Text
- | UnsupportedTypeInKind SourceType
- | RoleMismatch Text Role Role
- | InvalidCoercibleInstanceDeclaration [SourceType]
- | UnsupportedRoleDeclaration
- | RoleDeclarationArityMismatch (ProperName 'TypeName) Int Int
- | DuplicateRoleDeclaration (ProperName 'TypeName)
- | CannotDeriveInvalidConstructorArg (Qualified (ProperName 'ClassName)) [Qualified (ProperName 'ClassName)] Bool
- | CannotSkipTypeApplication SourceType
- | CannotApplyExpressionOfTypeOnType SourceType SourceType
- newtype MultipleErrors = MultipleErrors {}
- data CodegenTarget
- = JS
- | JSSourceMap
- | CoreFn
- | Docs
- data InternalIdentData
- data RebracketCaller
- type PrettyPrintConstraint = (Qualified (ProperName 'ClassName), [PrettyPrintType], [PrettyPrintType])
- data PrettyPrintType
- = PPTUnknown Int
- | PPTypeVar Text (Maybe Text)
- | PPTypeLevelString PSString
- | PPTypeLevelInt Integer
- | PPTypeWildcard (Maybe Text)
- | PPTypeConstructor (Qualified (ProperName 'TypeName))
- | PPTypeOp (Qualified (OpName 'TypeOpName))
- | PPSkolem Text Int
- | PPTypeApp PrettyPrintType PrettyPrintType
- | PPKindArg PrettyPrintType
- | PPConstrainedType PrettyPrintConstraint PrettyPrintType
- | PPKindedType PrettyPrintType PrettyPrintType
- | PPBinaryNoParensType PrettyPrintType PrettyPrintType PrettyPrintType
- | PPParensInType PrettyPrintType
- | PPForAll [(TypeVarVisibility, Text, Maybe PrettyPrintType)] PrettyPrintType
- | PPFunction PrettyPrintType PrettyPrintType
- | PPRecord [(Label, PrettyPrintType)] (Maybe PrettyPrintType)
- | PPRow [(Label, PrettyPrintType)] (Maybe PrettyPrintType)
- | PPTruncated
- data TypeVarVisibility
- data ConstraintData = PartialConstraintData [[Text]] Bool
- data RowListItem a = RowListItem {
- rowListAnn :: a
- rowListLabel :: Label
- rowListType :: Type a
- data ExternsFile = ExternsFile {}
- data ExternsImport = ExternsImport {}
- data ExternsFixity = ExternsFixity {}
- data ExternsTypeFixity = ExternsTypeFixity {}
- data ExternsDeclaration
- = EDType { }
- | EDTypeSynonym { }
- | EDDataConstructor { }
- | EDValue { }
- | EDClass { }
- | EDInstance {
- edInstanceClassName :: Qualified (ProperName 'ClassName)
- edInstanceName :: Ident
- edInstanceForAll :: [(Text, SourceType)]
- edInstanceKinds :: [SourceType]
- edInstanceTypes :: [SourceType]
- edInstanceConstraints :: Maybe [SourceConstraint]
- edInstanceChain :: Maybe ChainId
- edInstanceChainIndex :: Integer
- edInstanceNameSource :: NameSource
- edInstanceSourceSpan :: SourceSpan
- data ImportDeclarationType
- data NameSource
- type Precedence = Integer
- data NameVisibility
- data TypeClassData = TypeClassData {}
- data TypeKind
- = DataType DataDeclType [(Text, Maybe SourceType, Role)] [(ProperName 'ConstructorName, [SourceType])]
- | TypeSynonym
- | ExternData [Role]
- | LocalTypeVariable
- | ScopedTypeVar
- data Imports = Imports {
- importedTypes :: ImportMap (ProperName 'TypeName)
- importedTypeOps :: ImportMap (OpName 'TypeOpName)
- importedDataConstructors :: ImportMap (ProperName 'ConstructorName)
- importedTypeClasses :: ImportMap (ProperName 'ClassName)
- importedValues :: ImportMap Ident
- importedValueOps :: ImportMap (OpName 'ValueOpName)
- importedModules :: Set ModuleName
- importedQualModules :: Set ModuleName
- importedKinds :: ImportMap (ProperName 'TypeName)
- type UsedImports = Map ModuleName [Qualified Name]
- data ExportSource = ExportSource {}
- data Exports = Exports {
- exportedTypes :: Map (ProperName 'TypeName) ([ProperName 'ConstructorName], ExportSource)
- exportedTypeOps :: Map (OpName 'TypeOpName) ExportSource
- exportedTypeClasses :: Map (ProperName 'ClassName) ExportSource
- exportedValues :: Map Ident ExportSource
- exportedValueOps :: Map (OpName 'ValueOpName) ExportSource
- data ImportRecord a = ImportRecord {}
- data WildcardData
- data DependencyDepth
- = Direct
- | Transitive
- data CheckState = CheckState {
- checkEnv :: Environment
- checkNextType :: Int
- checkNextSkolem :: Int
- checkNextSkolemScope :: Int
- checkCurrentModule :: Maybe ModuleName
- checkCurrentModuleImports :: [(SourceAnn, ModuleName, ImportDeclarationType, Maybe ModuleName, Map (ProperName 'TypeName) ([ProperName 'ConstructorName], ExportSource))]
- checkSubstitution :: Substitution
- checkHints :: [ErrorMessageHint]
- checkConstructorImportsForCoercible :: Set (ModuleName, Qualified (ProperName 'ConstructorName))
- data MakeActions m = MakeActions {
- getInputTimestampsAndHashes :: ModuleName -> m (Either RebuildPolicy (Map FilePath (UTCTime, m ContentHash)))
- getOutputTimestamp :: ModuleName -> m (Maybe UTCTime)
- readExterns :: ModuleName -> m (FilePath, Maybe ExternsFile)
- codegen :: Module Ann -> Module -> ExternsFile -> SupplyT m ()
- ffiCodegen :: Module Ann -> m ()
- progress :: ProgressMessage -> m ()
- readCacheDb :: m CacheDb
- writeCacheDb :: CacheDb -> m ()
- writePackageJson :: m ()
- outputPrimDocs :: m ()
- data RebuildPolicy
- data ProgressMessage = CompilingModule ModuleName (Maybe (Int, Int))
- type ModuleGraph = [(ModuleName, [ModuleName])]
- data ModuleSignature = ModuleSignature {}
- newtype AssocList k t = AssocList {
- runAssocList :: [(k, t)]
- data PathNode t
- newtype PathTree t = PathTree (AssocList PSString (PathNode t))
- data WhereProvenance
- data ImportProvenance
- data KindSignatureFor
- data RoleDeclarationData = RoleDeclarationData {
- rdeclSourceAnn :: !SourceAnn
- rdeclIdent :: !(ProperName 'TypeName)
- rdeclRoles :: ![Role]
- data InstanceDerivationStrategy
- newtype UnkLevel = UnkLevel (NonEmpty Unknown)
- newtype SkolemScope = SkolemScope {}
- type SynonymMap = Map (Qualified (ProperName 'TypeName)) ([(Text, Maybe SourceType)], SourceType)
- type KindMap = Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind)
- data BindingGroupType
- data TypeSearch
- = TSBefore Environment
- | TSAfter {
- tsAfterIdentifiers :: [(Qualified Text, SourceType)]
- tsAfterRecordFields :: Maybe [(Label, SourceType)]
- type Frontier = Map IntSet (First (IntMap (NonEmpty IntSet)))
- data HintCategory
- data ValueFixity = ValueFixity Fixity (Qualified (Either Ident (ProperName 'ConstructorName))) (OpName 'ValueOpName)
- data TypeFixity = TypeFixity Fixity (Qualified (ProperName 'TypeName)) (OpName 'TypeOpName)
- data ScopedIdent
- newtype ErrorSuggestion = ErrorSuggestion Text
- data PPEOptions = PPEOptions {
- ppeCodeColor :: Maybe (ColorIntensity, Color)
- ppeFull :: Bool
- ppeLevel :: Level
- ppeShowDocs :: Bool
- ppeRelativeDirectory :: FilePath
- ppeFileContents :: [(FilePath, Text)]
- pattern ByNullSourcePos :: QualifiedBy
- pattern ValueDecl :: SourceAnn -> Ident -> NameKind -> [Binder] -> [GuardedExpr] -> Declaration
- pattern MkUnguarded :: Expr -> GuardedExpr
- pattern NullSourceSpan :: SourceSpan
- pattern REmptyKinded :: forall a. a -> Maybe (Type a) -> Type a
- pattern TypeFixityDeclaration :: SourceAnn -> Fixity -> Qualified (ProperName 'TypeName) -> OpName 'TypeOpName -> Declaration
- pattern ValueFixityDeclaration :: SourceAnn -> Fixity -> Qualified (Either Ident (ProperName 'ConstructorName)) -> OpName 'ValueOpName -> Declaration
- pattern NullSourceAnn :: SourceAnn
- function :: SourceType -> SourceType -> SourceType
- defaultOptions :: Options
- internalError :: HasCallStack => String -> a
- renderBox :: Box -> String
- line :: Text -> Box
- errorMessage :: SimpleErrorMessage -> MultipleErrors
- copyFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> FilePath -> m ()
- nonEmpty :: MultipleErrors -> Bool
- toMaybeModuleName :: QualifiedBy -> Maybe ModuleName
- exportedDeclarations :: Module -> [Declaration]
- isExported :: Maybe [DeclarationRef] -> Declaration -> Bool
- declName :: Declaration -> Maybe Name
- declRefName :: DeclarationRef -> Name
- flattenDecls :: [Declaration] -> [Declaration]
- everythingOnTypes :: (r -> r -> r) -> (Type a -> r) -> Type a -> r
- coerceProperName :: ProperName a -> ProperName b
- disqualify :: Qualified a -> a
- isQualified :: Qualified a -> Bool
- isQualifiedWith :: ModuleName -> Qualified a -> Bool
- binderNames :: Binder -> [Ident]
- mapTypeInstanceBody :: ([Declaration] -> [Declaration]) -> TypeInstanceBody -> TypeInstanceBody
- traverseTypeInstanceBody :: Applicative f => ([Declaration] -> f [Declaration]) -> TypeInstanceBody -> f TypeInstanceBody
- mapConstraintArgs :: ([Type a] -> [Type a]) -> Constraint a -> Constraint a
- guardedExprM :: Applicative m => (Guard -> m Guard) -> (Expr -> m Expr) -> GuardedExpr -> m GuardedExpr
- nullSourceSpan :: SourceSpan
- byMaybeModuleName :: Maybe ModuleName -> QualifiedBy
- displayStartEndPos :: SourceSpan -> Text
- rethrow :: MonadError e m => (e -> e) -> m a -> m a
- errorMessage' :: SourceSpan -> SimpleErrorMessage -> MultipleErrors
- rethrowWithPosition :: MonadError MultipleErrors m => SourceSpan -> m a -> m a
- addHint :: ErrorMessageHint -> MultipleErrors -> MultipleErrors
- runIdent :: Ident -> Text
- runModuleName :: ModuleName -> Text
- showIdent :: Ident -> Text
- showQualified :: (a -> Text) -> Qualified a -> Text
- unusedIdent :: Text
- everywhereOnValues :: (Declaration -> Declaration) -> (Expr -> Expr) -> (Binder -> Binder) -> (Declaration -> Declaration, Expr -> Expr, Binder -> Binder)
- dictTypeName :: ProperName a -> ProperName a
- freshIdent :: MonadSupply m => Text -> m Ident
- everythingOnValues :: forall r. (r -> r -> r) -> (Declaration -> r) -> (Expr -> r) -> (Binder -> r) -> (CaseAlternative -> r) -> (DoNotationElement -> r) -> (Declaration -> r, Expr -> r, Binder -> r, CaseAlternative -> r, DoNotationElement -> r)
- isDictTypeName :: ProperName a -> Bool
- lookupConstructor :: Environment -> Qualified (ProperName 'ConstructorName) -> (DataDeclType, ProperName 'TypeName, SourceType, [Ident])
- lookupValue :: Environment -> Qualified Ident -> Maybe (SourceType, NameKind, NameVisibility)
- getQual :: Qualified a -> Maybe ModuleName
- evalSupplyT :: Functor m => Integer -> SupplyT m a -> m a
- convertPrettyPrintType :: Int -> Type a -> PrettyPrintType
- prettyPrintLabel :: Label -> Text
- displayRole :: Role -> Text
- typeVarVisibilityPrefix :: TypeVarVisibility -> Text
- prettyPrintString :: PSString -> Text
- moduleNameFromString :: Text -> ModuleName
- nullSourceAnn :: SourceAnn
- eqType :: Type a -> Type b -> Bool
- srcTypeConstructor :: Qualified (ProperName 'TypeName) -> SourceType
- prettyPrintBinderAtom :: Binder -> Text
- prettyPrintObjectKey :: PSString -> Text
- prettyPrintSuggestedType :: Type a -> String
- prettyPrintValue :: Int -> Expr -> Box
- typeAsBox :: Int -> Type a -> Box
- typeAtomAsBox :: Int -> Type a -> Box
- typeDiffAsBox :: Int -> Type a -> Box
- eraseForAllKindAnnotations :: Type a -> Type a
- eraseKindApps :: Type a -> Type a
- everywhereOnTypesTopDownM :: Monad m => (Type a -> m (Type a)) -> Type a -> m (Type a)
- getAnnForType :: Type a -> a
- isMonoType :: Type a -> Bool
- overConstraintArgs :: Functor f => ([Type a] -> f [Type a]) -> Constraint a -> f (Constraint a)
- rowFromList :: ([RowListItem a], Type a) -> Type a
- rowToList :: Type a -> ([RowListItem a], Type a)
- srcTUnknown :: Int -> SourceType
- externsIsCurrentVersion :: ExternsFile -> Bool
- moduleToExternsFile :: Module -> Environment -> Map Ident Ident -> ExternsFile
- applyExternsFileToEnvironment :: ExternsFile -> Environment -> Environment
- externsFileName :: FilePath
- getTypeOpRef :: DeclarationRef -> Maybe (OpName 'TypeOpName)
- getValueOpRef :: DeclarationRef -> Maybe (OpName 'ValueOpName)
- makeTypeClassData :: [(Text, Maybe SourceType)] -> [(Ident, SourceType)] -> [SourceConstraint] -> [FunctionalDependency] -> Bool -> TypeClassData
- isPlainIdent :: Ident -> Bool
- srcInstanceType :: SourceSpan -> [(Text, SourceType)] -> Qualified (ProperName 'ClassName) -> [SourceType] -> SourceType
- graph :: [FilePath] -> IO (Either MultipleErrors Value, MultipleErrors)
- ffiCodegen' :: Map ModuleName FilePath -> Set CodegenTarget -> Maybe (ModuleName -> String -> FilePath) -> Module Ann -> Make ()
- cacheDbFile :: FilePath -> FilePath
- make :: forall m. (MonadBaseControl IO m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => MakeActions m -> [PartialResult Module] -> m [ExternsFile]
- runMake :: Options -> Make a -> IO (Either MultipleErrors a, MultipleErrors)
- lint :: forall m. MonadWriter MultipleErrors m => Module -> m ()
- getIdentName :: Name -> Maybe Ident
- everythingWithContextOnTypes :: s -> r -> (r -> r -> r) -> (s -> Type a -> (s, r)) -> Type a -> r
- checkExhaustiveExpr :: forall m. MonadWriter MultipleErrors m => SourceSpan -> Environment -> ModuleName -> Expr -> m Expr
- isTrueExpr :: Expr -> Bool
- everywhereOnValuesM :: forall m. Monad m => (Declaration -> m Declaration) -> (Expr -> m Expr) -> (Binder -> m Binder) -> (Declaration -> m Declaration, Expr -> m Expr, Binder -> m Binder)
- lintImports :: forall m. MonadWriter MultipleErrors m => Module -> Env -> UsedImports -> m ()
- getTypeRef :: DeclarationRef -> Maybe (ProperName 'TypeName, Maybe [ProperName 'ConstructorName])
- isExplicit :: ImportDeclarationType -> Bool
- everywhereWithContextOnValues :: forall s. s -> (s -> Declaration -> (s, Declaration)) -> (s -> Expr -> (s, Expr)) -> (s -> Binder -> (s, Binder)) -> (s -> CaseAlternative -> (s, CaseAlternative)) -> (s -> DoNotationElement -> (s, DoNotationElement)) -> (s -> Guard -> (s, Guard)) -> (Declaration -> Declaration, Expr -> Expr, Binder -> Binder, CaseAlternative -> CaseAlternative, DoNotationElement -> DoNotationElement, Guard -> Guard)
- everywhereOnTypes :: (Type a -> Type a) -> Type a -> Type a
- rebuildModule :: forall m. (MonadBaseControl IO m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => MakeActions m -> [ExternsFile] -> Module -> m ExternsFile
- rebuildModule' :: forall m. (MonadBaseControl IO m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => MakeActions m -> Env -> [ExternsFile] -> Module -> m ExternsFile
- inferForeignModules :: forall m. MonadIO m => Map ModuleName (Either RebuildPolicy FilePath) -> m (Map ModuleName FilePath)
- runSupply :: Integer -> Supply a -> (a, Integer)
- runSupplyT :: Integer -> SupplyT m a -> m (a, Integer)
- getModuleName :: Module -> ModuleName
- getModuleSourceSpan :: Module -> SourceSpan
- importPrim :: Module -> Module
- initEnvironment :: Environment
- defaultPPEOptions :: PPEOptions
- errorMessage'' :: NonEmpty SourceSpan -> SimpleErrorMessage -> MultipleErrors
- prettyPrintMultipleErrors :: PPEOptions -> MultipleErrors -> String
- moduleSignature :: Module -> ModuleSignature
- sortModules :: forall m a. MonadError MultipleErrors m => DependencyDepth -> (a -> ModuleSignature) -> [a] -> m ([a], ModuleGraph)
- isBuiltinModuleName :: ModuleName -> Bool
- renameInModule :: Module Ann -> (Map Ident Ident, Module Ann)
- collapseBindingGroups :: [Declaration] -> [Declaration]
- createBindingGroups :: forall m. MonadError MultipleErrors m => ModuleName -> [Declaration] -> m [Declaration]
- desugar :: MonadSupply m => MonadError MultipleErrors m => MonadWriter MultipleErrors m => MonadState (Env, UsedImports) m => [ExternsFile] -> Module -> m Module
- desugarCaseGuards :: forall m. (MonadSupply m, MonadError MultipleErrors m) => [Declaration] -> m [Declaration]
- externsEnv :: forall m. (MonadError MultipleErrors m, MonadWriter MultipleErrors m) => Env -> ExternsFile -> m Env
- primEnv :: Env
- emptyCheckState :: Environment -> CheckState
- typeCheckModule :: forall m. (MonadSupply m, MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => Map ModuleName Exports -> Module -> m Module
- renderProgressMessage :: Text -> ProgressMessage -> Text
- buildMakeActions :: FilePath -> Map ModuleName (Either RebuildPolicy FilePath) -> Map ModuleName FilePath -> Bool -> MakeActions Make
- checkForeignDecls :: Module ann -> FilePath -> Make (Either MultipleErrors (ForeignModuleType, Set Ident))
- readCacheDb' :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m CacheDb
- writeCacheDb' :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> CacheDb -> m ()
- getTimestamp :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m UTCTime
- getTimestampMaybe :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m (Maybe UTCTime)
- hashFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m ContentHash
- makeIO :: (MonadIO m, MonadError MultipleErrors m) => Text -> IO a -> m a
- readExternsFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m (Maybe ExternsFile)
- readJSONFile :: (MonadIO m, MonadError MultipleErrors m) => FromJSON a => FilePath -> m (Maybe a)
- readTextFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m Text
- writeCborFile :: (MonadIO m, MonadError MultipleErrors m) => Serialise a => FilePath -> a -> m ()
- writeJSONFile :: (MonadIO m, MonadError MultipleErrors m) => ToJSON a => FilePath -> a -> m ()
- writeTextFile :: FilePath -> ByteString -> Make ()
- readJSONFileIO :: FromJSON a => FilePath -> IO (Maybe a)
- readCborFile :: (MonadIO m, MonadError MultipleErrors m) => Serialise a => FilePath -> m (Maybe a)
- readCborFileIO :: Serialise a => FilePath -> IO (Maybe a)
- writeCborFileIO :: Serialise a => FilePath -> a -> IO ()
- singleError :: ErrorMessage -> MultipleErrors
- parU :: forall m a b. MonadError MultipleErrors m => [a] -> (a -> m b) -> m [b]
- prettyPrintType :: Int -> Type a -> String
- prettyPrintTypeWithUnicode :: Int -> Type a -> String
- prettyPrintTypeAtom :: Int -> Type a -> String
- tyFunction :: SourceType
- tyRecord :: SourceType
- rowToSortedList :: Type a -> ([RowListItem a], Type a)
- prettyPrintBinder :: Binder -> Text
- isBySourcePos :: QualifiedBy -> Bool
- desugarAdoModule :: forall m. (MonadSupply m, MonadError MultipleErrors m) => Module -> m Module
- declSourceSpan :: Declaration -> SourceSpan
- freshIdent' :: MonadSupply m => m Ident
- createBindingGroupsModule :: MonadError MultipleErrors m => Module -> m Module
- positionedError :: SourceSpan -> ErrorMessageHint
- desugarCases :: forall m. (MonadSupply m, MonadError MultipleErrors m) => [Declaration] -> m [Declaration]
- desugarCasesModule :: (MonadSupply m, MonadError MultipleErrors m) => Module -> m Module
- withPosition :: SourceSpan -> ErrorMessage -> ErrorMessage
- guardWith :: MonadError e m => e -> Bool -> m ()
- desugarDoModule :: forall m. (MonadSupply m, MonadError MultipleErrors m) => Module -> m Module
- desugarLetPatternModule :: Module -> Module
- desugarImports :: forall m. (MonadError MultipleErrors m, MonadWriter MultipleErrors m, MonadState (Env, UsedImports) m) => Module -> m Module
- warnAndRethrow :: (MonadError e m, MonadWriter e m) => (e -> e) -> m a -> m a
- warnAndRethrowWithPosition :: (MonadError MultipleErrors m, MonadWriter MultipleErrors m) => SourceSpan -> m a -> m a
- everywhereOnTypesM :: Monad m => (Type a -> m (Type a)) -> Type a -> m (Type a)
- warnWithPosition :: MonadWriter MultipleErrors m => SourceSpan -> m a -> m a
- internalModuleSourceSpan :: String -> SourceSpan
- disqualifyFor :: Maybe ModuleName -> Qualified a -> Maybe a
- isUnqualified :: Qualified a -> Bool
- desugarObjectConstructors :: forall m. (MonadSupply m, MonadError MultipleErrors m) => Module -> m Module
- desugarDecl :: forall m. (MonadSupply m, MonadError MultipleErrors m) => Declaration -> m Declaration
- desugarSignedLiterals :: Module -> Module
- rebracket :: forall m. MonadError MultipleErrors m => MonadSupply m => [ExternsFile] -> Module -> m Module
- rebracketFiltered :: forall m. MonadError MultipleErrors m => MonadSupply m => RebracketCaller -> (Declaration -> Bool) -> [ExternsFile] -> Module -> m Module
- checkFixityExports :: forall m. MonadError MultipleErrors m => Module -> m Module
- eraseOpName :: OpName a -> OpName 'AnyOpName
- srcTypeApp :: SourceType -> SourceType -> SourceType
- desugarTypeClasses :: (MonadSupply m, MonadError MultipleErrors m) => [ExternsFile] -> Module -> m Module
- typeClassMemberName :: Declaration -> Text
- superClassDictionaryNames :: [Constraint a] -> [Text]
- primClasses :: Map (Qualified (ProperName 'ClassName)) TypeClassData
- primCoerceClasses :: Map (Qualified (ProperName 'ClassName)) TypeClassData
- primIntClasses :: Map (Qualified (ProperName 'ClassName)) TypeClassData
- primRowClasses :: Map (Qualified (ProperName 'ClassName)) TypeClassData
- primRowListClasses :: Map (Qualified (ProperName 'ClassName)) TypeClassData
- primSymbolClasses :: Map (Qualified (ProperName 'ClassName)) TypeClassData
- primTypeErrorClasses :: Map (Qualified (ProperName 'ClassName)) TypeClassData
- qualify :: ModuleName -> Qualified a -> (ModuleName, a)
- deriveInstances :: forall m. (MonadError MultipleErrors m, MonadSupply m) => Module -> m Module
- replaceAllTypeVars :: [(Text, Type a)] -> Type a -> Type a
- srcTypeLevelString :: PSString -> SourceType
- checkNewtype :: forall m. MonadError MultipleErrors m => ProperName 'TypeName -> [DataConstructorDeclaration] -> m (DataConstructorDeclaration, (Ident, SourceType))
- desugarTypeDeclarationsModule :: forall m. MonadError MultipleErrors m => Module -> m Module
- everywhereOnValuesTopDownM :: forall m. Monad m => (Declaration -> m Declaration) -> (Expr -> m Expr) -> (Binder -> m Binder) -> (Declaration -> m Declaration, Expr -> m Expr, Binder -> m Binder)
- kindArity :: Type a -> Int
- nominalRolesForKind :: Type a -> [Role]
- mkQualified :: a -> ModuleName -> Qualified a
- containsForAll :: Type a -> Bool
- freeTypeVariables :: Type a -> [Text]
- unapplyTypes :: Type a -> (Type a, [Type a], [Type a])
- kindType :: SourceType
- (-:>) :: SourceType -> SourceType -> SourceType
- internalCompilerError :: (MonadError MultipleErrors m, HasCallStack) => Text -> m a
- getEnv :: MonadState CheckState m => m Environment
- getTypeClassDictionaries :: MonadState CheckState m => m (Map QualifiedBy (Map (Qualified (ProperName 'ClassName)) (Map (Qualified Ident) (NonEmpty NamedDict))))
- unsafeCheckCurrentModule :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => m ModuleName
- replaceAllTypeSynonyms :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => SourceType -> m SourceType
- completeBinderList :: Type a -> Maybe ([(a, (Text, Type a))], Type a)
- srcTypeVar :: Text -> SourceType
- usedTypeVariables :: Type a -> [Text]
- kindRow :: SourceType -> SourceType
- tyBoolean :: SourceType
- tyInt :: SourceType
- tyString :: SourceType
- addHints :: [ErrorMessageHint] -> MultipleErrors -> MultipleErrors
- elaborateKind :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> m SourceType
- unifyKinds' :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> SourceType -> m ()
- withErrorMessageHint :: (MonadState CheckState m, MonadError MultipleErrors m) => ErrorMessageHint -> m a -> m a
- unapplyKinds :: Type a -> ([Type a], Type a)
- freshKindWithKind :: MonadState CheckState m => SourceSpan -> SourceType -> m SourceType
- lookupRoles :: Environment -> Qualified (ProperName 'TypeName) -> [Role]
- alignRowsWith :: (Label -> Type a -> Type a -> r) -> Type a -> Type a -> ([r], (([RowListItem a], Type a), ([RowListItem a], Type a)))
- containsUnknowns :: Type a -> Bool
- srcConstraint :: Qualified (ProperName 'ClassName) -> [SourceType] -> [SourceType] -> Maybe ConstraintData -> SourceConstraint
- kindOf :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> m (SourceType, SourceType)
- kindOfWithUnknowns :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> m (([(Unknown, SourceType)], SourceType), SourceType)
- kindOfWithScopedVars :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> m (([(Text, SourceType)], SourceType), SourceType)
- kindOfData :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> DataDeclarationArgs -> m DataDeclarationResult
- kindOfTypeSynonym :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> TypeDeclarationArgs -> m TypeDeclarationResult
- kindOfClass :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> ClassDeclarationArgs -> m ClassDeclarationResult
- kindsOfAll :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> [TypeDeclarationArgs] -> [DataDeclarationArgs] -> [ClassDeclarationArgs] -> m ([TypeDeclarationResult], [DataDeclarationResult], [ClassDeclarationResult])
- unifyKinds :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> SourceType -> m ()
- subsumesKind :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> SourceType -> m ()
- instantiateKind :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => (SourceType, SourceType) -> SourceType -> m SourceType
- checkKind :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> SourceType -> m SourceType
- inferKind :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> m (SourceType, SourceType)
- checkConstraint :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => SourceConstraint -> m SourceConstraint
- checkInstanceDeclaration :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> InstanceDeclarationArgs -> m InstanceDeclarationResult
- checkKindDeclaration :: forall m. (MonadSupply m, MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> SourceType -> m SourceType
- checkTypeKind :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> SourceType -> m ()
- unknownsWithKinds :: forall m. (MonadState CheckState m, MonadError MultipleErrors m, HasCallStack) => [Unknown] -> m [(Unknown, SourceType)]
- freshKind :: MonadState CheckState m => SourceSpan -> m SourceType
- bindLocalTypeVariables :: MonadState CheckState m => ModuleName -> [(ProperName 'TypeName, SourceType)] -> m a -> m a
- debugType :: Type a -> String
- lookupTypeVariable :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => ModuleName -> Qualified (ProperName 'TypeName) -> m SourceType
- withFreshSubstitution :: MonadState CheckState m => m a -> m a
- srcKindedType :: SourceType -> SourceType -> SourceType
- checkRoles :: forall m. MonadError MultipleErrors m => [(Text, Maybe SourceType, Role)] -> [Role] -> m ()
- checkRoleDeclarationArity :: forall m. MonadError MultipleErrors m => ProperName 'TypeName -> [Role] -> Int -> m ()
- inferRoles :: Environment -> ModuleName -> ProperName 'TypeName -> [(Text, Maybe SourceType)] -> [DataConstructorDeclaration] -> [Role]
- inferDataBindingGroupRoles :: Environment -> ModuleName -> [RoleDeclarationData] -> [DataDeclaration] -> ProperName 'TypeName -> [(Text, Maybe SourceType)] -> [Role]
- everythingWithContextOnValues :: forall s r. s -> r -> (r -> r -> r) -> (s -> Declaration -> (s, r)) -> (s -> Expr -> (s, r)) -> (s -> Binder -> (s, r)) -> (s -> CaseAlternative -> (s, r)) -> (s -> DoNotationElement -> (s, r)) -> (Declaration -> r, Expr -> r, Binder -> r, CaseAlternative -> r, DoNotationElement -> r)
- everywhereWithContextOnValuesM :: forall m s. Monad m => s -> (s -> Declaration -> m (s, Declaration)) -> (s -> Expr -> m (s, Expr)) -> (s -> Binder -> m (s, Binder)) -> (s -> CaseAlternative -> m (s, CaseAlternative)) -> (s -> DoNotationElement -> m (s, DoNotationElement)) -> (s -> Guard -> m (s, Guard)) -> (Declaration -> m Declaration, Expr -> m Expr, Binder -> m Binder, CaseAlternative -> m CaseAlternative, DoNotationElement -> m DoNotationElement, Guard -> m Guard)
- nonEmptySpan :: SourceAnn -> Maybe SourceSpan
- replaceTypeVars :: Text -> Type a -> Type a -> Type a
- getHints :: MonadState CheckState m => m [ErrorMessageHint]
- isREmpty :: forall a. Type a -> Bool
- replaceAllTypeSynonymsM :: MonadError MultipleErrors m => SynonymMap -> KindMap -> SourceType -> m SourceType
- typesOf :: (MonadSupply m, MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => BindingGroupType -> ModuleName -> [((SourceAnn, Ident), Expr)] -> m [((SourceAnn, Ident), (Expr, SourceType))]
- escalateWarningWhen :: (MonadWriter MultipleErrors m, MonadError MultipleErrors m) => (ErrorMessage -> Bool) -> m a -> m a
- onErrorMessages :: (ErrorMessage -> ErrorMessage) -> MultipleErrors -> MultipleErrors
- onTypesInErrorMessage :: (SourceType -> SourceType) -> ErrorMessage -> ErrorMessage
- withoutPosition :: ErrorMessage -> ErrorMessage
- getLocalContext :: MonadState CheckState m => m Context
- lookupUnkName :: MonadState CheckState m => Unknown -> m (Maybe Text)
- mkForAll :: [(a, (Text, Maybe (Type a)))] -> Type a -> Type a
- displaySourcePos :: SourcePos -> Text
- displaySourcePosShort :: SourcePos -> Text
- displayStartEndPosShort :: SourceSpan -> Text
- displaySourceSpan :: FilePath -> SourceSpan -> Text
- widenSourceSpan :: SourceSpan -> SourceSpan -> SourceSpan
- widenSourceAnn :: SourceAnn -> SourceAnn -> SourceAnn
- showAssoc :: Associativity -> String
- readAssoc :: String -> Associativity
- getValOpName :: Name -> Maybe (OpName 'ValueOpName)
- getTypeName :: Name -> Maybe (ProperName 'TypeName)
- getTypeOpName :: Name -> Maybe (OpName 'TypeOpName)
- getDctorName :: Name -> Maybe (ProperName 'ConstructorName)
- getClassName :: Name -> Maybe (ProperName 'ClassName)
- showOp :: OpName a -> Text
- coerceOpName :: OpName a -> OpName b
- codegenTargets :: Map String CodegenTarget
- srcTypeLevelInt :: Integer -> SourceType
- srcTypeWildcard :: SourceType
- srcKindApp :: SourceType -> SourceType -> SourceType
- srcForAll :: TypeVarVisibility -> Text -> Maybe SourceType -> SourceType -> Maybe SkolemScope -> SourceType
- srcConstrainedType :: SourceConstraint -> SourceType -> SourceType
- srcREmpty :: SourceType
- srcRCons :: Label -> SourceType -> SourceType -> SourceType
- toREmptyKinded :: forall a. Type a -> Maybe (a, Maybe (Type a))
- mapConstraintArgsAll :: ([Type a] -> [Type a]) -> Constraint a -> Constraint a
- overConstraintArgsAll :: Applicative f => ([Type a] -> f [Type a]) -> Constraint a -> f (Constraint a)
- constraintDataToJSON :: ConstraintData -> Value
- constraintToJSON :: (a -> Value) -> Constraint a -> Value
- typeToJSON :: forall a. (a -> Value) -> Type a -> Value
- typeVarVisToJSON :: TypeVarVisibility -> Value
- constraintDataFromJSON :: Value -> Parser ConstraintData
- constraintFromJSON :: forall a. Parser a -> (Value -> Parser a) -> Value -> Parser (Constraint a)
- typeFromJSON :: forall a. Parser a -> (Value -> Parser a) -> Value -> Parser (Type a)
- typeVarVisFromJSON :: Value -> Parser TypeVarVisibility
- srcRowListItem :: Label -> SourceType -> RowListItem SourceAnn
- addVisibility :: [(Text, TypeVarVisibility)] -> Type a -> Type a
- quantify :: Type a -> Type a
- moveQuantifiersToFront :: Type a -> Type a
- unknowns :: Type a -> IntSet
- unapplyConstraints :: Type a -> ([Constraint a], Type a)
- setAnnForType :: a -> Type a -> Type a
- annForType :: Lens' (Type a) a
- compareType :: Type a -> Type b -> Ordering
- eqMaybeType :: Maybe (Type a) -> Maybe (Type b) -> Bool
- eqConstraint :: Constraint a -> Constraint b -> Bool
- compareMaybeType :: Maybe (Type a) -> Maybe (Type b) -> Ordering
- compareConstraint :: Constraint a -> Constraint b -> Ordering
- allPrimTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind)
- allPrimClasses :: Map (Qualified (ProperName 'ClassName)) TypeClassData
- computeCoveringSets :: Int -> [FunctionalDependency] -> (Set Int, Set (Set Int))
- showDataDeclType :: DataDeclType -> Text
- kindConstraint :: SourceType
- kindSymbol :: SourceType
- kindDoc :: SourceType
- kindOrdering :: SourceType
- kindRowList :: SourceType -> SourceType
- kindOfREmpty :: SourceType
- tyForall :: Text -> SourceType -> SourceType -> SourceType
- tyVar :: Text -> SourceType
- tyChar :: SourceType
- tyNumber :: SourceType
- tyArray :: SourceType
- primClass :: Qualified (ProperName 'ClassName) -> (SourceType -> SourceType) -> [(Qualified (ProperName 'TypeName), (SourceType, TypeKind))]
- primTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind)
- primBooleanTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind)
- primCoerceTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind)
- primOrderingTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind)
- primRowTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind)
- primRowListTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind)
- primSymbolTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind)
- primIntTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind)
- primTypeErrorTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind)
- dictTypeName' :: Text -> Text
- binderNamesWithSpans :: Binder -> [(SourceSpan, Ident)]
- isIrrefutable :: Binder -> Bool
- onTypeSearchTypes :: (SourceType -> SourceType) -> TypeSearch -> TypeSearch
- onTypeSearchTypesM :: Applicative m => (SourceType -> m SourceType) -> TypeSearch -> m TypeSearch
- getModuleDeclarations :: Module -> [Declaration]
- addDefaultImport :: Qualified ModuleName -> Module -> Module
- declRefSourceSpan :: DeclarationRef -> SourceSpan
- getValueRef :: DeclarationRef -> Maybe Ident
- getTypeClassRef :: DeclarationRef -> Maybe (ProperName 'ClassName)
- isModuleRef :: DeclarationRef -> Bool
- getTypeDeclaration :: Declaration -> Maybe TypeDeclarationData
- unwrapTypeDeclaration :: TypeDeclarationData -> (Ident, SourceType)
- getValueDeclaration :: Declaration -> Maybe (ValueDeclarationData [GuardedExpr])
- mapDataCtorFields :: ([(Ident, SourceType)] -> [(Ident, SourceType)]) -> DataConstructorDeclaration -> DataConstructorDeclaration
- traverseDataCtorFields :: Monad m => ([(Ident, SourceType)] -> m [(Ident, SourceType)]) -> DataConstructorDeclaration -> m DataConstructorDeclaration
- declSourceAnn :: Declaration -> SourceAnn
- isValueDecl :: Declaration -> Bool
- isDataDecl :: Declaration -> Bool
- isTypeSynonymDecl :: Declaration -> Bool
- isImportDecl :: Declaration -> Bool
- isRoleDecl :: Declaration -> Bool
- isExternDataDecl :: Declaration -> Bool
- isFixityDecl :: Declaration -> Bool
- getFixityDecl :: Declaration -> Maybe (Either ValueFixity TypeFixity)
- isExternDecl :: Declaration -> Bool
- isTypeClassInstanceDecl :: Declaration -> Bool
- isTypeClassDecl :: Declaration -> Bool
- isKindDecl :: Declaration -> Bool
- isAnonymousArgument :: Expr -> Bool
- mapGuardedExpr :: (Guard -> Guard) -> (Expr -> Expr) -> GuardedExpr -> GuardedExpr
- litM :: Monad m => (a -> m a) -> Literal a -> m (Literal a)
- inScope :: Ident -> Set ScopedIdent -> Bool
- everythingWithScope :: forall r. Monoid r => (Set ScopedIdent -> Declaration -> r) -> (Set ScopedIdent -> Expr -> r) -> (Set ScopedIdent -> Binder -> r) -> (Set ScopedIdent -> CaseAlternative -> r) -> (Set ScopedIdent -> DoNotationElement -> r) -> (Set ScopedIdent -> Declaration -> r, Set ScopedIdent -> Expr -> r, Set ScopedIdent -> Binder -> r, Set ScopedIdent -> CaseAlternative -> r, Set ScopedIdent -> DoNotationElement -> r)
- accumTypes :: Monoid r => (SourceType -> r) -> (Declaration -> r, Expr -> r, Binder -> r, CaseAlternative -> r, DoNotationElement -> r)
- overTypes :: (SourceType -> SourceType) -> Expr -> Expr
- errorSpan :: ErrorMessage -> Maybe (NonEmpty SourceSpan)
- findHint :: (ErrorMessageHint -> Maybe a) -> ErrorMessage -> Maybe a
- errorModule :: ErrorMessage -> Maybe ModuleName
- stripModuleAndSpan :: ErrorMessage -> ErrorMessage
- errorCode :: ErrorMessage -> Text
- unwrapErrorMessage :: ErrorMessage -> SimpleErrorMessage
- errorMessage''' :: [SourceSpan] -> SimpleErrorMessage -> MultipleErrors
- defaultUnknownMap :: TypeMap
- replaceUnknowns :: SourceType -> State TypeMap SourceType
- onTypesInErrorMessageM :: Applicative m => (SourceType -> m SourceType) -> ErrorMessage -> m ErrorMessage
- errorDocUri :: ErrorMessage -> Text
- errorSuggestion :: SimpleErrorMessage -> Maybe ErrorSuggestion
- prettyPrintSuggestedTypeSimplified :: Type a -> String
- prettyPrintKindSignatureFor :: KindSignatureFor -> Text
- prettyPrintRef :: DeclarationRef -> Maybe Text
- suggestionSpan :: ErrorMessage -> Maybe SourceSpan
- showSuggestion :: SimpleErrorMessage -> Text
- ansiColor :: (ColorIntensity, Color) -> String
- ansiColorReset :: String
- colorCode :: Maybe (ColorIntensity, Color) -> Text -> Text
- colorCodeBox :: Maybe (ColorIntensity, Color) -> Box -> Box
- commasAndConjunction :: Text -> [Text] -> Text
- defaultCodeColor :: (ColorIntensity, Color)
- prettyPrintSingleError :: PPEOptions -> ErrorMessage -> Box
- lineS :: String -> Box
- toTypelevelString :: Type a -> Maybe Box
- prettyPrintExport :: DeclarationRef -> Text
- prettyPrintImport :: ModuleName -> ImportDeclarationType -> Maybe ModuleName -> Text
- prettyPrintMultipleErrorsBox :: PPEOptions -> MultipleErrors -> [Box]
- prettyPrintMultipleWarnings :: PPEOptions -> MultipleErrors -> String
- prettyPrintMultipleWarningsBox :: PPEOptions -> MultipleErrors -> [Box]
- prettyPrintMultipleErrorsWith :: PPEOptions -> String -> String -> MultipleErrors -> [Box]
- insertUnkName :: MonadState CheckState m => Unknown -> Text -> m ()
- emptySubstitution :: Substitution
- bindNames :: MonadState CheckState m => Map (Qualified Ident) (SourceType, NameKind, NameVisibility) -> m a -> m a
- bindTypes :: MonadState CheckState m => Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) -> m a -> m a
- withScopedTypeVars :: (MonadState CheckState m, MonadWriter MultipleErrors m) => ModuleName -> [(Text, SourceType)] -> m a -> m a
- rethrowWithPositionTC :: (MonadState CheckState m, MonadError MultipleErrors m) => SourceSpan -> m a -> m a
- warnAndRethrowWithPositionTC :: (MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => SourceSpan -> m a -> m a
- withTypeClassDictionaries :: MonadState CheckState m => [NamedDict] -> m a -> m a
- lookupTypeClassDictionaries :: MonadState CheckState m => QualifiedBy -> m (Map (Qualified (ProperName 'ClassName)) (Map (Qualified Ident) (NonEmpty NamedDict)))
- lookupTypeClassDictionariesForClass :: MonadState CheckState m => QualifiedBy -> Qualified (ProperName 'ClassName) -> m (Map (Qualified Ident) (NonEmpty NamedDict))
- bindLocalVariables :: MonadState CheckState m => [(SourceSpan, Ident, SourceType, NameVisibility)] -> m a -> m a
- makeBindingGroupVisible :: MonadState CheckState m => m ()
- modifyEnv :: MonadState CheckState m => (Environment -> Environment) -> m ()
- withBindingGroupVisible :: MonadState CheckState m => m a -> m a
- preservingNames :: MonadState CheckState m => m a -> m a
- lookupVariable :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => Qualified Ident -> m SourceType
- getVisibility :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => Qualified Ident -> m NameVisibility
- checkVisibility :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => Qualified Ident -> m ()
- putEnv :: MonadState CheckState m => Environment -> m ()
- runCheck :: Functor m => CheckState -> StateT CheckState m a -> m (a, Environment)
- capturingSubstitution :: MonadState CheckState m => (a -> Substitution -> b) -> m a -> m b
- withoutWarnings :: MonadWriter w m => m a -> m (a, w)
- debugEnv :: Environment -> [String]
- debugTypes :: Environment -> [String]
- debugTypeSynonyms :: Environment -> [String]
- debugTypeClasses :: Environment -> [String]
- debugTypeClassDictionaries :: Environment -> [String]
- debugDataConstructors :: Environment -> [String]
- debugNames :: Environment -> [String]
- debugConstraint :: Constraint a -> String
- debugValue :: Expr -> String
- debugSubstitution :: Substitution -> [String]
- version :: Version
Documentation
Data type for literal values. Parameterised so it can be used for Exprs and Binders.
Constructors
NumericLiteral (Either Integer Double) | A numeric literal |
StringLiteral PSString | A string literal |
CharLiteral Char | A character literal |
BooleanLiteral Bool | A boolean literal |
ArrayLiteral [a] | An array literal |
ObjectLiteral [(PSString, a)] | An object literal |
Instances
Functor Literal # | |
Show a => Show (Literal a) # | |
Eq a => Eq (Literal a) # | |
Ord a => Ord (Literal a) # | |
Defined in Language.PureScript.AST.Literals |
A module declaration, consisting of comments about the module, a module name, a list of declarations, and a list of the declarations that are explicitly exported. If the export list is Nothing, everything is exported.
Constructors
Module SourceSpan [Comment] ModuleName [Declaration] (Maybe [DeclarationRef]) |
The type of types
Constructors
TUnknown a Int | A unification variable of type Type |
TypeVar a Text | A named type variable |
TypeLevelString a PSString | A type-level string |
TypeLevelInt a Integer | A type-level natural |
TypeWildcard a WildcardData | A type wildcard, as would appear in a partial type synonym |
TypeConstructor a (Qualified (ProperName 'TypeName)) | A type constructor |
TypeOp a (Qualified (OpName 'TypeOpName)) | A type operator. This will be desugared into a type constructor during the "operators" phase of desugaring. |
TypeApp a (Type a) (Type a) | A type application |
KindApp a (Type a) (Type a) | Explicit kind application |
ForAll a TypeVarVisibility Text (Maybe (Type a)) (Type a) (Maybe SkolemScope) | Forall quantifier |
ConstrainedType a (Constraint a) (Type a) | A type with a set of type class constraints |
Skolem a Text (Maybe (Type a)) Int SkolemScope | A skolem constant |
REmpty a | An empty row |
RCons a Label (Type a) (Type a) | A non-empty row |
KindedType a (Type a) (Type a) | A type with a kind annotation |
BinaryNoParensType a (Type a) (Type a) (Type a) | Binary operator application. During the rebracketing phase of desugaring, this data constructor will be removed. |
ParensInType a (Type a) | Explicit parentheses. During the rebracketing phase of desugaring, this data constructor will be removed. Note: although it seems this constructor is not used, it _is_ useful, since it prevents certain traversals from matching. |
Instances
Foldable Type # | |
Defined in Language.PureScript.Types Methods fold :: Monoid m => Type m -> m # foldMap :: Monoid m => (a -> m) -> Type a -> m # foldMap' :: Monoid m => (a -> m) -> Type a -> m foldr :: (a -> b -> b) -> b -> Type a -> b # foldr' :: (a -> b -> b) -> b -> Type a -> b # foldl :: (b -> a -> b) -> b -> Type a -> b # foldl' :: (b -> a -> b) -> b -> Type a -> b # foldr1 :: (a -> a -> a) -> Type a -> a # foldl1 :: (a -> a -> a) -> Type a -> a # elem :: Eq a => a -> Type a -> Bool # maximum :: Ord a => Type a -> a # | |
Traversable Type # | |
Functor Type # | |
FromJSON (Type SourceAnn) # | |
FromJSON (Type ()) # | |
Defined in Language.PureScript.Types | |
FromJSON a => FromJSON (Type a) # | |
Defined in Language.PureScript.Types | |
ToJSON a => ToJSON (Type a) # | |
Generic (Type a) # | |
Show a => Show (Type a) # | |
NFData a => NFData (Type a) # | |
Defined in Language.PureScript.Types | |
Eq (Type a) # | |
Ord (Type a) # | |
Serialise a => Serialise (Type a) # | |
type Rep (Type a) # | |
Defined in Language.PureScript.Types type Rep (Type a) = D1 ('MetaData "Type" "Language.PureScript.Types" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) ((((C1 ('MetaCons "TUnknown" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons "TypeVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) :+: (C1 ('MetaCons "TypeLevelString" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PSString)) :+: C1 ('MetaCons "TypeLevelInt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)))) :+: ((C1 ('MetaCons "TypeWildcard" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 WildcardData)) :+: C1 ('MetaCons "TypeConstructor" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Qualified (ProperName 'TypeName))))) :+: (C1 ('MetaCons "TypeOp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Qualified (OpName 'TypeOpName)))) :+: C1 ('MetaCons "TypeApp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a))))))) :+: (((C1 ('MetaCons "KindApp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)))) :+: C1 ('MetaCons "ForAll" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypeVarVisibility) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Type a))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe SkolemScope)))))) :+: (C1 ('MetaCons "ConstrainedType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Constraint a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)))) :+: C1 ('MetaCons "Skolem" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Type a))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SkolemScope)))))) :+: ((C1 ('MetaCons "REmpty" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "RCons" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Label)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a))))) :+: (C1 ('MetaCons "KindedType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)))) :+: (C1 ('MetaCons "BinaryNoParensType" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)))) :+: C1 ('MetaCons "ParensInType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a)))))))) |
data Constraint a #
A typeclass constraint
Constructors
Constraint | |
Fields
|
Instances
The data type of compiler options
Constructors
Options | |
Fields
|
Instances
A sum of the possible name types, useful for error and lint messages.
Constructors
Instances
Generic Name # | |
Show Name # | |
NFData Name # | |
Defined in Language.PureScript.Names | |
Eq Name # | |
Ord Name # | |
Serialise Name # | |
type Rep Name # | |
Defined in Language.PureScript.Names type Rep Name = D1 ('MetaData "Name" "Language.PureScript.Names" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) ((C1 ('MetaCons "IdentName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident)) :+: (C1 ('MetaCons "ValOpName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName 'ValueOpName))) :+: C1 ('MetaCons "TyName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'TypeName))))) :+: ((C1 ('MetaCons "TyOpName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName 'TypeOpName))) :+: C1 ('MetaCons "DctorName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'ConstructorName)))) :+: (C1 ('MetaCons "TyClassName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'ClassName))) :+: C1 ('MetaCons "ModName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName))))) |
Names for value identifiers
Constructors
Ident Text | An alphanumeric identifier |
GenIdent (Maybe Text) Integer | A generated name for an identifier |
UnusedIdent | A generated name used only for type-checking |
InternalIdent !InternalIdentData | A generated name used only for internal transformations |
Instances
FromJSON Ident # | |
Defined in Language.PureScript.Names | |
ToJSON Ident # | |
Generic Ident # | |
Show Ident # | |
NFData Ident # | |
Defined in Language.PureScript.Names | |
Eq Ident # | |
Ord Ident # | |
Serialise Ident # | |
type Rep Ident # | |
Defined in Language.PureScript.Names type Rep Ident = D1 ('MetaData "Ident" "Language.PureScript.Names" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) ((C1 ('MetaCons "Ident" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "GenIdent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer))) :+: (C1 ('MetaCons "UnusedIdent" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InternalIdent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 InternalIdentData)))) |
type HasCallStack = ?callStack :: CallStack #
data ErrorMessage #
Constructors
ErrorMessage [ErrorMessageHint] SimpleErrorMessage |
Instances
Show ErrorMessage # | |
Defined in Language.PureScript.Errors Methods showsPrec :: Int -> ErrorMessage -> ShowS # show :: ErrorMessage -> String # showList :: [ErrorMessage] -> ShowS # |
Constructors
LineComment Text | |
BlockComment Text |
Instances
FromJSON Comment # | |
Defined in Language.PureScript.Comments | |
ToJSON Comment # | |
Generic Comment # | |
Show Comment # | |
NFData Comment # | |
Defined in Language.PureScript.Comments | |
Eq Comment # | |
Ord Comment # | |
Defined in Language.PureScript.Comments | |
Serialise Comment # | |
FromJSON (Constraint SourceAnn) # | |
Defined in Language.PureScript.Types Methods parseJSON :: Value -> Parser (Constraint SourceAnn) # parseJSONList :: Value -> Parser [Constraint SourceAnn] # | |
FromJSON (Type SourceAnn) # | |
type Rep Comment # | |
Defined in Language.PureScript.Comments type Rep Comment = D1 ('MetaData "Comment" "Language.PureScript.Comments" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "LineComment" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "BlockComment" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) |
type Env = Map ModuleName (SourceSpan, Imports, Exports) #
The imports and exports for a collection of modules. The SourceSpan
is used
to store the source location of the module with a given name, used to provide
useful information when there is a duplicate module definition.
type Context = [(Ident, SourceType)] #
A map of locally-bound names in scope.
How critical the issue is
The role of a type constructor's parameter.
Constructors
Nominal | This parameter's identity affects the representation of the type it is parameterising. |
Representational | This parameter's representation affects the representation of the type it is parameterising. |
Phantom | This parameter has no effect on the representation of the type it is parameterising. |
Instances
FromJSON Role # | |
Defined in Language.PureScript.Roles | |
ToJSON Role # | |
Generic Role # | |
Show Role # | |
NFData Role # | |
Defined in Language.PureScript.Roles | |
Eq Role # | |
Ord Role # | |
Serialise Role # | |
type Rep Role # | |
Defined in Language.PureScript.Roles type Rep Role = D1 ('MetaData "Role" "Language.PureScript.Roles" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Nominal" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Representational" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Phantom" 'PrefixI 'False) (U1 :: Type -> Type))) |
data Environment #
The Environment
defines all values and types which are currently in scope:
Constructors
Environment | |
Fields
|
Instances
Generic Environment # | |
Defined in Language.PureScript.Environment Associated Types type Rep Environment :: Type -> Type # | |
Show Environment # | |
Defined in Language.PureScript.Environment Methods showsPrec :: Int -> Environment -> ShowS # show :: Environment -> String # showList :: [Environment] -> ShowS # | |
NFData Environment # | |
Defined in Language.PureScript.Environment Methods rnf :: Environment -> () # | |
type Rep Environment # | |
Defined in Language.PureScript.Environment type Rep Environment = D1 ('MetaData "Environment" "Language.PureScript.Environment" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Environment" 'PrefixI 'True) ((S1 ('MetaSel ('Just "names") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (Qualified Ident) (SourceType, NameKind, NameVisibility))) :*: (S1 ('MetaSel ('Just "types") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind))) :*: S1 ('MetaSel ('Just "dataConstructors") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (Qualified (ProperName 'ConstructorName)) (DataDeclType, ProperName 'TypeName, SourceType, [Ident]))))) :*: (S1 ('MetaSel ('Just "typeSynonyms") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (Qualified (ProperName 'TypeName)) ([(Text, Maybe SourceType)], SourceType))) :*: (S1 ('MetaSel ('Just "typeClassDictionaries") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map QualifiedBy (Map (Qualified (ProperName 'ClassName)) (Map (Qualified Ident) (NonEmpty NamedDict))))) :*: S1 ('MetaSel ('Just "typeClasses") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (Qualified (ProperName 'ClassName)) TypeClassData)))))) |
data Associativity #
Associativity for infix operators
Instances
Fixity data for infix operators
Constructors
Fixity Associativity Precedence |
Instances
ToJSON Fixity # | |
Generic Fixity # | |
Show Fixity # | |
NFData Fixity # | |
Defined in Language.PureScript.AST.Operators | |
Eq Fixity # | |
Ord Fixity # | |
Serialise Fixity # | |
type Rep Fixity # | |
Defined in Language.PureScript.AST.Operators type Rep Fixity = D1 ('MetaData "Fixity" "Language.PureScript.AST.Operators" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Fixity" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Associativity) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Precedence))) |
data Substitution #
A substitution of unification variables for types.
Constructors
Substitution | |
Fields
|
A map from rigid type variable name/unknown variable pairs to new variables.
Constructors
TypeMap | |
Fields
|
Instances
MonadTrans SupplyT # | |
Defined in Control.Monad.Supply | |
MonadError e m => MonadError e (SupplyT m) # | |
Defined in Control.Monad.Supply Methods throwError :: e -> SupplyT m a # catchError :: SupplyT m a -> (e -> SupplyT m a) -> SupplyT m a # | |
MonadReader r m => MonadReader r (SupplyT m) # | |
MonadWriter w m => MonadWriter w (SupplyT m) # | |
MonadPlus m => Alternative (SupplyT m) # | |
Monad m => Applicative (SupplyT m) # | |
Functor m => Functor (SupplyT m) # | |
Monad m => Monad (SupplyT m) # | |
MonadPlus m => MonadPlus (SupplyT m) # | |
Monad m => MonadSupply (SupplyT m) # | |
A monad for running make actions
Constructors
Make | |
Fields |
Instances
MonadIO Make # | |
Defined in Language.PureScript.Make.Monad | |
Applicative Make # | |
Functor Make # | |
Monad Make # | |
MonadBaseControl IO Make # | |
MonadError MultipleErrors Make # | |
Defined in Language.PureScript.Make.Monad Methods throwError :: MultipleErrors -> Make a # catchError :: Make a -> (MultipleErrors -> Make a) -> Make a # | |
MonadReader Options Make # | |
MonadWriter MultipleErrors Make # | |
Defined in Language.PureScript.Make.Monad Methods writer :: (a, MultipleErrors) -> Make a tell :: MultipleErrors -> Make () listen :: Make a -> Make (a, MultipleErrors) pass :: Make (a, MultipleErrors -> MultipleErrors) -> Make a | |
MonadBase IO Make # | |
Defined in Language.PureScript.Make.Monad | |
type StM Make a # | |
Defined in Language.PureScript.Make.Monad |
Source position information
Constructors
SourcePos | |
Fields
|
Instances
FromJSON SourcePos # | |
Defined in Language.PureScript.AST.SourcePos | |
ToJSON SourcePos # | |
Generic SourcePos # | |
Show SourcePos # | |
NFData SourcePos # | |
Defined in Language.PureScript.AST.SourcePos | |
Eq SourcePos # | |
Ord SourcePos # | |
Defined in Language.PureScript.AST.SourcePos | |
Serialise SourcePos # | |
type Rep SourcePos # | |
Defined in Language.PureScript.AST.SourcePos type Rep SourcePos = D1 ('MetaData "SourcePos" "Language.PureScript.AST.SourcePos" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "SourcePos" 'PrefixI 'True) (S1 ('MetaSel ('Just "sourcePosLine") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Just "sourcePosColumn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))) |
data SourceSpan #
Constructors
SourceSpan | |
Instances
newtype OpName (a :: OpNameType) #
Operator alias names.
Instances
FromJSON (OpName a) # | |
Defined in Language.PureScript.Names | |
ToJSON (OpName a) # | |
Generic (OpName a) # | |
Show (OpName a) # | |
NFData (OpName a) # | |
Defined in Language.PureScript.Names | |
Eq (OpName a) # | |
Ord (OpName a) # | |
Defined in Language.PureScript.Names | |
Serialise (OpName a) # | |
type Rep (OpName a) # | |
Defined in Language.PureScript.Names |
data OpNameType #
The closed set of operator alias types.
Constructors
ValueOpName | |
TypeOpName | |
AnyOpName |
newtype ProperName (a :: ProperNameType) #
Proper names, i.e. capitalized names for e.g. module names, type//data constructors.
Constructors
ProperName | |
Fields |
Instances
data ProperNameType #
The closed set of proper name types.
Constructors
TypeName | |
ConstructorName | |
ClassName | |
Namespace |
A qualified name, i.e. a name with an optional module name
Constructors
Qualified QualifiedBy a |
Instances
Foldable Qualified # | |
Defined in Language.PureScript.Names Methods fold :: Monoid m => Qualified m -> m # foldMap :: Monoid m => (a -> m) -> Qualified a -> m # foldMap' :: Monoid m => (a -> m) -> Qualified a -> m foldr :: (a -> b -> b) -> b -> Qualified a -> b # foldr' :: (a -> b -> b) -> b -> Qualified a -> b # foldl :: (b -> a -> b) -> b -> Qualified a -> b # foldl' :: (b -> a -> b) -> b -> Qualified a -> b # foldr1 :: (a -> a -> a) -> Qualified a -> a # foldl1 :: (a -> a -> a) -> Qualified a -> a # toList :: Qualified a -> [a] # length :: Qualified a -> Int # elem :: Eq a => a -> Qualified a -> Bool # maximum :: Ord a => Qualified a -> a # minimum :: Ord a => Qualified a -> a # | |
Traversable Qualified # | |
Defined in Language.PureScript.Names | |
Functor Qualified # | |
FromJSON a => FromJSON (Qualified a) # | |
Defined in Language.PureScript.Names | |
ToJSON a => ToJSON (Qualified a) # | |
Generic (Qualified a) # | |
Show a => Show (Qualified a) # | |
NFData a => NFData (Qualified a) # | |
Defined in Language.PureScript.Names | |
Eq a => Eq (Qualified a) # | |
Ord a => Ord (Qualified a) # | |
Defined in Language.PureScript.Names | |
Serialise a => Serialise (Qualified a) # | |
type Rep (Qualified a) # | |
Defined in Language.PureScript.Names type Rep (Qualified a) = D1 ('MetaData "Qualified" "Language.PureScript.Names" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Qualified" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 QualifiedBy) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) |
type SourceType = Type SourceAnn #
Data type for binders
Constructors
NullBinder | Wildcard binder |
LiteralBinder SourceSpan (Literal Binder) | A binder which matches a literal |
VarBinder SourceSpan Ident | A binder which binds an identifier |
ConstructorBinder SourceSpan (Qualified (ProperName 'ConstructorName)) [Binder] | A binder which matches a data constructor |
OpBinder SourceSpan (Qualified (OpName 'ValueOpName)) | A operator alias binder. During the rebracketing phase of desugaring, this data constructor will be removed. |
BinaryNoParensBinder Binder Binder Binder | Binary operator application. During the rebracketing phase of desugaring, this data constructor will be removed. |
ParensInBinder Binder | Explicit parentheses. During the rebracketing phase of desugaring, this data constructor will be removed. Note: although it seems this constructor is not used, it _is_ useful, since it prevents certain traversals from matching. |
NamedBinder SourceSpan Ident Binder | A binder which binds its input to an identifier |
PositionedBinder SourceSpan [Comment] Binder | A binder with source position information |
TypedBinder SourceType Binder | A binder with a type annotation |
type SourceAnn = (SourceSpan, [Comment]) #
Source annotation - position information and comments.
type SourceConstraint = Constraint SourceAnn #
newtype ModuleName #
Module names
Constructors
ModuleName Text |
Instances
data QualifiedBy #
Constructors
BySourcePos SourcePos | |
ByModuleName ModuleName |
Instances
data DataDeclType #
The type ('data' or 'newtype') of a data type declaration
Instances
data FunctionalDependency #
A functional dependency indicates a relationship between two sets of type arguments in a class declaration.
Constructors
FunctionalDependency | |
Fields
|
Instances
A flag for whether a name is for an private or public value - only public values will be included in a generated externs file.
Constructors
Private | A private value introduced as an artifact of code generation (class instances, class member accessors, etc.) |
Public | A public value for a module member or foreign import declaration |
External | A name for member introduced by foreign import |
Instances
Generic NameKind # | |
Show NameKind # | |
NFData NameKind # | |
Defined in Language.PureScript.Environment | |
Eq NameKind # | |
Serialise NameKind # | |
type Rep NameKind # | |
Defined in Language.PureScript.Environment type Rep NameKind = D1 ('MetaData "NameKind" "Language.PureScript.Environment" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "Private" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Public" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "External" 'PrefixI 'False) (U1 :: Type -> Type))) |
data DataConstructorDeclaration #
Constructors
DataConstructorDeclaration | |
Fields
|
Instances
Show DataConstructorDeclaration # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> DataConstructorDeclaration -> ShowS # show :: DataConstructorDeclaration -> String # showList :: [DataConstructorDeclaration] -> ShowS # | |
Eq DataConstructorDeclaration # | |
Defined in Language.PureScript.AST.Declarations Methods (==) :: DataConstructorDeclaration -> DataConstructorDeclaration -> Bool # (/=) :: DataConstructorDeclaration -> DataConstructorDeclaration -> Bool # |
data Declaration #
The data type of declarations
Constructors
DataDeclaration SourceAnn DataDeclType (ProperName 'TypeName) [(Text, Maybe SourceType)] [DataConstructorDeclaration] | A data type declaration (data or newtype, name, arguments, data constructors) |
DataBindingGroupDeclaration (NonEmpty Declaration) | A minimal mutually recursive set of data type declarations |
TypeSynonymDeclaration SourceAnn (ProperName 'TypeName) [(Text, Maybe SourceType)] SourceType | A type synonym declaration (name, arguments, type) |
KindDeclaration SourceAnn KindSignatureFor (ProperName 'TypeName) SourceType | A kind signature declaration |
RoleDeclaration !RoleDeclarationData | A role declaration (name, roles) |
TypeDeclaration !TypeDeclarationData | A type declaration for a value (name, ty) |
ValueDeclaration !(ValueDeclarationData [GuardedExpr]) | A value declaration (name, top-level binders, optional guard, value) |
BoundValueDeclaration SourceAnn Binder Expr | A declaration paired with pattern matching in let-in expression (binder, optional guard, value) |
BindingGroupDeclaration (NonEmpty ((SourceAnn, Ident), NameKind, Expr)) | A minimal mutually recursive set of value declarations |
ExternDeclaration SourceAnn Ident SourceType | A foreign import declaration (name, type) |
ExternDataDeclaration SourceAnn (ProperName 'TypeName) SourceType | A data type foreign import (name, kind) |
FixityDeclaration SourceAnn (Either ValueFixity TypeFixity) | A fixity declaration |
ImportDeclaration SourceAnn ModuleName ImportDeclarationType (Maybe ModuleName) | A module import (module name, qualifiedunqualifiedhiding, optional "qualified as" name) |
TypeClassDeclaration SourceAnn (ProperName 'ClassName) [(Text, Maybe SourceType)] [SourceConstraint] [FunctionalDependency] [Declaration] | A type class declaration (name, argument, implies, member declarations) |
TypeInstanceDeclaration SourceAnn SourceAnn ChainId Integer (Either Text Ident) [SourceConstraint] (Qualified (ProperName 'ClassName)) [SourceType] TypeInstanceBody | A type instance declaration (instance chain, chain index, name, dependencies, class name, instance types, member declarations) The first |
Instances
Show Declaration # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> Declaration -> ShowS # show :: Declaration -> String # showList :: [Declaration] -> ShowS # |
data DeclarationRef #
An item in a list of explicit imports or exports
Constructors
TypeClassRef SourceSpan (ProperName 'ClassName) | A type class |
TypeOpRef SourceSpan (OpName 'TypeOpName) | A type operator |
TypeRef SourceSpan (ProperName 'TypeName) (Maybe [ProperName 'ConstructorName]) | A type constructor with data constructors |
ValueRef SourceSpan Ident | A value |
ValueOpRef SourceSpan (OpName 'ValueOpName) | A value-level operator |
TypeInstanceRef SourceSpan Ident NameSource | A type class instance, created during typeclass desugaring |
ModuleRef SourceSpan ModuleName | A module, in its entirety |
ReExportRef SourceSpan ExportSource DeclarationRef | A value re-exported from another module. These will be inserted during elaboration in name desugaring. |
Instances
data CaseAlternative #
An alternative in a case statement
Constructors
CaseAlternative | |
Fields
|
Instances
Show CaseAlternative # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> CaseAlternative -> ShowS # show :: CaseAlternative -> String # showList :: [CaseAlternative] -> ShowS # |
data DoNotationElement #
A statement in a do-notation block
Constructors
DoNotationValue Expr | A monadic value without a binder |
DoNotationBind Binder Expr | A monadic value with a binder |
DoNotationLet [Declaration] | A let statement, i.e. a pure value with a binder |
PositionedDoNotationElement SourceSpan [Comment] DoNotationElement | A do notation element with source position information |
Instances
Show DoNotationElement # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> DoNotationElement -> ShowS # show :: DoNotationElement -> String # showList :: [DoNotationElement] -> ShowS # |
Data type for expressions and terms
Constructors
Literal SourceSpan (Literal Expr) | A literal value |
UnaryMinus SourceSpan Expr | A prefix -, will be desugared |
BinaryNoParens Expr Expr Expr | Binary operator application. During the rebracketing phase of desugaring, this data constructor will be removed. |
Parens Expr | Explicit parentheses. During the rebracketing phase of desugaring, this data constructor will be removed. Note: although it seems this constructor is not used, it _is_ useful, since it prevents certain traversals from matching. |
Accessor PSString Expr | An record property accessor expression (e.g. `obj.x` or `_.x`). Anonymous arguments will be removed during desugaring and expanded into a lambda that reads a property from a record. |
ObjectUpdate Expr [(PSString, Expr)] | Partial record update |
ObjectUpdateNested Expr (PathTree Expr) | Object updates with nested support: `x { foo { bar = e } }`
Replaced during desugaring into a |
Abs Binder Expr | Function introduction |
App Expr Expr | Function application |
VisibleTypeApp Expr SourceType | A type application (e.g. `f @Int`) |
Unused Expr | Hint that an expression is unused.
This is used to ignore type class dictionaries that are necessarily empty.
The inner expression lets us solve subgoals before eliminating the whole expression.
The code gen will render this as |
Var SourceSpan (Qualified Ident) | Variable |
Op SourceSpan (Qualified (OpName 'ValueOpName)) | An operator. This will be desugared into a function during the "operators" phase of desugaring. |
IfThenElse Expr Expr Expr | Conditional (if-then-else expression) |
Constructor SourceSpan (Qualified (ProperName 'ConstructorName)) | A data constructor |
Case [Expr] [CaseAlternative] | A case expression. During the case expansion phase of desugaring, top-level binders will get desugared into case expressions, hence the need for guards and multiple binders per branch here. |
TypedValue Bool Expr SourceType | A value with a type annotation |
Let WhereProvenance [Declaration] Expr | A let binding |
Do (Maybe ModuleName) [DoNotationElement] | A do-notation block |
Ado (Maybe ModuleName) [DoNotationElement] Expr | An ado-notation block |
TypeClassDictionary SourceConstraint (Map QualifiedBy (Map (Qualified (ProperName 'ClassName)) (Map (Qualified Ident) (NonEmpty NamedDict)))) [ErrorMessageHint] | A placeholder for a type class dictionary to be inserted later. At the end of type checking, these placeholders will be replaced with actual expressions representing type classes dictionaries which can be evaluated at runtime. The constructor arguments represent (in order): whether or not to look at superclass implementations when searching for a dictionary, the type class name and instance type, and the type class dictionaries in scope. |
DeferredDictionary (Qualified (ProperName 'ClassName)) [SourceType] | A placeholder for a superclass dictionary to be turned into a TypeClassDictionary during typechecking |
DerivedInstancePlaceholder (Qualified (ProperName 'ClassName)) InstanceDerivationStrategy | A placeholder for a type class instance to be derived during typechecking |
AnonymousArgument | A placeholder for an anonymous function argument |
Hole Text | A typed hole that will be turned into a hint/error during typechecking |
PositionedValue SourceSpan [Comment] Expr | A value with source position information |
A guard is just a boolean-valued expression that appears alongside a set of binders
Constructors
ConditionGuard Expr | |
PatternGuard Binder Expr |
data GuardedExpr #
The right hand side of a binder in value declarations and case expressions.
Constructors
GuardedExpr [Guard] Expr |
Instances
Show GuardedExpr # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> GuardedExpr -> ShowS # show :: GuardedExpr -> String # showList :: [GuardedExpr] -> ShowS # |
data TypeDeclarationData #
A type declaration assigns a type to an identifier, eg:
identity :: forall a. a -> a
In this example identity
is the identifier and forall a. a -> a
the type.
Constructors
TypeDeclarationData | |
Fields
|
Instances
Show TypeDeclarationData # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> TypeDeclarationData -> ShowS # show :: TypeDeclarationData -> String # showList :: [TypeDeclarationData] -> ShowS # | |
Eq TypeDeclarationData # | |
Defined in Language.PureScript.AST.Declarations Methods (==) :: TypeDeclarationData -> TypeDeclarationData -> Bool # (/=) :: TypeDeclarationData -> TypeDeclarationData -> Bool # |
data TypeInstanceBody #
The members of a type class instance declaration
Constructors
DerivedInstance | This is a derived instance |
NewtypeInstance | This is an instance derived from a newtype |
ExplicitInstance [Declaration] | This is a regular (explicit) instance |
Instances
Show TypeInstanceBody # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> TypeInstanceBody -> ShowS # show :: TypeInstanceBody -> String # showList :: [TypeInstanceBody] -> ShowS # |
data ValueDeclarationData a #
A value declaration assigns a name and potential binders, to an expression (or multiple guarded expressions).
double x = x + x
In this example double
is the identifier, x
is a binder and x + x
is the expression.
Constructors
ValueDeclarationData | |
Fields
|
Instances
data ErrorMessageHint #
Error message hints, providing more detailed information about failure.
Constructors
Instances
Show ErrorMessageHint # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> ErrorMessageHint -> ShowS # show :: ErrorMessageHint -> String # showList :: [ErrorMessageHint] -> ShowS # |
data SimpleErrorMessage #
A type of error messages
Constructors
Instances
Show SimpleErrorMessage # | |
Defined in Language.PureScript.Errors Methods showsPrec :: Int -> SimpleErrorMessage -> ShowS # show :: SimpleErrorMessage -> String # showList :: [SimpleErrorMessage] -> ShowS # |
newtype MultipleErrors #
A stack trace for an error
Constructors
MultipleErrors | |
Fields |
Instances
data CodegenTarget #
Constructors
JS | |
JSSourceMap | |
CoreFn | |
Docs |
Instances
Show CodegenTarget # | |
Defined in Language.PureScript.Options Methods showsPrec :: Int -> CodegenTarget -> ShowS # show :: CodegenTarget -> String # showList :: [CodegenTarget] -> ShowS # | |
Eq CodegenTarget # | |
Defined in Language.PureScript.Options Methods (==) :: CodegenTarget -> CodegenTarget -> Bool # (/=) :: CodegenTarget -> CodegenTarget -> Bool # | |
Ord CodegenTarget # | |
Defined in Language.PureScript.Options Methods compare :: CodegenTarget -> CodegenTarget -> Ordering # (<) :: CodegenTarget -> CodegenTarget -> Bool # (<=) :: CodegenTarget -> CodegenTarget -> Bool # (>) :: CodegenTarget -> CodegenTarget -> Bool # (>=) :: CodegenTarget -> CodegenTarget -> Bool # max :: CodegenTarget -> CodegenTarget -> CodegenTarget # min :: CodegenTarget -> CodegenTarget -> CodegenTarget # |
data InternalIdentData #
This type is meant to be extended with any new uses for idents that come
along. Adding constructors to this type is cheaper than adding them to
Ident
because functions that match on Ident
can ignore all
InternalIdent
s with a single pattern, and thus don't have to change if
a new InternalIdentData
constructor is created.
Constructors
RuntimeLazyFactory | |
Lazy !Text |
Instances
data RebracketCaller #
Indicates whether the rebracketModule
is being called with the full desugar pass
run via `purs compile` or whether
only the partial desugar pass is run
via `purs docs`.
This indication is needed to prevent
a `purs docs` error when using
`case _ of` syntax in a type class instance.
Constructors
CalledByCompile | |
CalledByDocs |
Instances
Show RebracketCaller # | |
Defined in Language.PureScript.Sugar.Operators Methods showsPrec :: Int -> RebracketCaller -> ShowS # show :: RebracketCaller -> String # showList :: [RebracketCaller] -> ShowS # | |
Eq RebracketCaller # | |
Defined in Language.PureScript.Sugar.Operators Methods (==) :: RebracketCaller -> RebracketCaller -> Bool # (/=) :: RebracketCaller -> RebracketCaller -> Bool # |
type PrettyPrintConstraint = (Qualified (ProperName 'ClassName), [PrettyPrintType], [PrettyPrintType]) #
data PrettyPrintType #
Constructors
data TypeVarVisibility #
Constructors
TypeVarVisible | |
TypeVarInvisible |
Instances
data ConstraintData #
Additional data relevant to type class constraints
Constructors
PartialConstraintData [[Text]] Bool | Data to accompany a Partial constraint generated by the exhaustivity checker.
It contains (rendered) binder information for those binders which were
not matched, and a flag indicating whether the list was truncated or not.
Note: we use |
Instances
data RowListItem a #
Constructors
RowListItem | |
Fields
|
Instances
Foldable RowListItem # | |
Defined in Language.PureScript.Types Methods fold :: Monoid m => RowListItem m -> m # foldMap :: Monoid m => (a -> m) -> RowListItem a -> m # foldMap' :: Monoid m => (a -> m) -> RowListItem a -> m foldr :: (a -> b -> b) -> b -> RowListItem a -> b # foldr' :: (a -> b -> b) -> b -> RowListItem a -> b # foldl :: (b -> a -> b) -> b -> RowListItem a -> b # foldl' :: (b -> a -> b) -> b -> RowListItem a -> b # foldr1 :: (a -> a -> a) -> RowListItem a -> a # foldl1 :: (a -> a -> a) -> RowListItem a -> a # toList :: RowListItem a -> [a] # null :: RowListItem a -> Bool # length :: RowListItem a -> Int # elem :: Eq a => a -> RowListItem a -> Bool # maximum :: Ord a => RowListItem a -> a # minimum :: Ord a => RowListItem a -> a # sum :: Num a => RowListItem a -> a # product :: Num a => RowListItem a -> a # | |
Traversable RowListItem # | |
Defined in Language.PureScript.Types Methods traverse :: Applicative f => (a -> f b) -> RowListItem a -> f (RowListItem b) # sequenceA :: Applicative f => RowListItem (f a) -> f (RowListItem a) mapM :: Monad m => (a -> m b) -> RowListItem a -> m (RowListItem b) sequence :: Monad m => RowListItem (m a) -> m (RowListItem a) | |
Functor RowListItem # | |
Defined in Language.PureScript.Types Methods fmap :: (a -> b) -> RowListItem a -> RowListItem b # (<$) :: a -> RowListItem b -> RowListItem a # | |
Generic (RowListItem a) # | |
Defined in Language.PureScript.Types Associated Types type Rep (RowListItem a) :: Type -> Type # Methods from :: RowListItem a -> Rep (RowListItem a) x # to :: Rep (RowListItem a) x -> RowListItem a # | |
Show a => Show (RowListItem a) # | |
Defined in Language.PureScript.Types Methods showsPrec :: Int -> RowListItem a -> ShowS # show :: RowListItem a -> String # showList :: [RowListItem a] -> ShowS # | |
type Rep (RowListItem a) # | |
Defined in Language.PureScript.Types type Rep (RowListItem a) = D1 ('MetaData "RowListItem" "Language.PureScript.Types" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "RowListItem" 'PrefixI 'True) (S1 ('MetaSel ('Just "rowListAnn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rowListLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Label) :*: S1 ('MetaSel ('Just "rowListType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type a))))) |
data ExternsFile #
The data which will be serialized to an externs file
Constructors
ExternsFile | |
Fields
|
Instances
Generic ExternsFile # | |
Defined in Language.PureScript.Externs Associated Types type Rep ExternsFile :: Type -> Type # | |
Show ExternsFile # | |
Defined in Language.PureScript.Externs Methods showsPrec :: Int -> ExternsFile -> ShowS # show :: ExternsFile -> String # showList :: [ExternsFile] -> ShowS # | |
Serialise ExternsFile # | |
Defined in Language.PureScript.Externs Methods encode :: ExternsFile -> Encoding # decode :: Decoder s ExternsFile # encodeList :: [ExternsFile] -> Encoding # decodeList :: Decoder s [ExternsFile] # | |
type Rep ExternsFile # | |
Defined in Language.PureScript.Externs type Rep ExternsFile = D1 ('MetaData "ExternsFile" "Language.PureScript.Externs" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "ExternsFile" 'PrefixI 'True) (((S1 ('MetaSel ('Just "efVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "efModuleName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName)) :*: (S1 ('MetaSel ('Just "efExports") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DeclarationRef]) :*: S1 ('MetaSel ('Just "efImports") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ExternsImport]))) :*: ((S1 ('MetaSel ('Just "efFixities") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ExternsFixity]) :*: S1 ('MetaSel ('Just "efTypeFixities") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ExternsTypeFixity])) :*: (S1 ('MetaSel ('Just "efDeclarations") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ExternsDeclaration]) :*: S1 ('MetaSel ('Just "efSourceSpan") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceSpan))))) |
data ExternsImport #
A module import in an externs file
Constructors
ExternsImport | |
Fields
|
Instances
Generic ExternsImport # | |
Defined in Language.PureScript.Externs Associated Types type Rep ExternsImport :: Type -> Type # | |
Show ExternsImport # | |
Defined in Language.PureScript.Externs Methods showsPrec :: Int -> ExternsImport -> ShowS # show :: ExternsImport -> String # showList :: [ExternsImport] -> ShowS # | |
Serialise ExternsImport # | |
Defined in Language.PureScript.Externs Methods encode :: ExternsImport -> Encoding # decode :: Decoder s ExternsImport # encodeList :: [ExternsImport] -> Encoding # decodeList :: Decoder s [ExternsImport] # | |
type Rep ExternsImport # | |
Defined in Language.PureScript.Externs type Rep ExternsImport = D1 ('MetaData "ExternsImport" "Language.PureScript.Externs" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "ExternsImport" 'PrefixI 'True) (S1 ('MetaSel ('Just "eiModule") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName) :*: (S1 ('MetaSel ('Just "eiImportType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ImportDeclarationType) :*: S1 ('MetaSel ('Just "eiImportedAs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ModuleName))))) |
data ExternsFixity #
A fixity declaration in an externs file
Constructors
ExternsFixity | |
Fields
|
Instances
Generic ExternsFixity # | |
Defined in Language.PureScript.Externs Associated Types type Rep ExternsFixity :: Type -> Type # | |
Show ExternsFixity # | |
Defined in Language.PureScript.Externs Methods showsPrec :: Int -> ExternsFixity -> ShowS # show :: ExternsFixity -> String # showList :: [ExternsFixity] -> ShowS # | |
Serialise ExternsFixity # | |
Defined in Language.PureScript.Externs Methods encode :: ExternsFixity -> Encoding # decode :: Decoder s ExternsFixity # encodeList :: [ExternsFixity] -> Encoding # decodeList :: Decoder s [ExternsFixity] # | |
type Rep ExternsFixity # | |
Defined in Language.PureScript.Externs type Rep ExternsFixity = D1 ('MetaData "ExternsFixity" "Language.PureScript.Externs" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "ExternsFixity" 'PrefixI 'True) ((S1 ('MetaSel ('Just "efAssociativity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Associativity) :*: S1 ('MetaSel ('Just "efPrecedence") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Precedence)) :*: (S1 ('MetaSel ('Just "efOperator") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName 'ValueOpName)) :*: S1 ('MetaSel ('Just "efAlias") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Qualified (Either Ident (ProperName 'ConstructorName))))))) |
data ExternsTypeFixity #
A type fixity declaration in an externs file
Constructors
ExternsTypeFixity | |
Fields
|
Instances
Generic ExternsTypeFixity # | |
Defined in Language.PureScript.Externs Associated Types type Rep ExternsTypeFixity :: Type -> Type # Methods from :: ExternsTypeFixity -> Rep ExternsTypeFixity x # to :: Rep ExternsTypeFixity x -> ExternsTypeFixity # | |
Show ExternsTypeFixity # | |
Defined in Language.PureScript.Externs Methods showsPrec :: Int -> ExternsTypeFixity -> ShowS # show :: ExternsTypeFixity -> String # showList :: [ExternsTypeFixity] -> ShowS # | |
Serialise ExternsTypeFixity # | |
Defined in Language.PureScript.Externs Methods encode :: ExternsTypeFixity -> Encoding # decode :: Decoder s ExternsTypeFixity # encodeList :: [ExternsTypeFixity] -> Encoding # decodeList :: Decoder s [ExternsTypeFixity] # | |
type Rep ExternsTypeFixity # | |
Defined in Language.PureScript.Externs type Rep ExternsTypeFixity = D1 ('MetaData "ExternsTypeFixity" "Language.PureScript.Externs" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "ExternsTypeFixity" 'PrefixI 'True) ((S1 ('MetaSel ('Just "efTypeAssociativity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Associativity) :*: S1 ('MetaSel ('Just "efTypePrecedence") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Precedence)) :*: (S1 ('MetaSel ('Just "efTypeOperator") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName 'TypeOpName)) :*: S1 ('MetaSel ('Just "efTypeAlias") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Qualified (ProperName 'TypeName)))))) |
data ExternsDeclaration #
A type or value declaration appearing in an externs file
Constructors
EDType | A type declaration |
Fields | |
EDTypeSynonym | A type synonym |
Fields | |
EDDataConstructor | A data constructor |
EDValue | A value declaration |
Fields | |
EDClass | A type class declaration |
Fields
| |
EDInstance | An instance declaration |
Fields
|
Instances
Generic ExternsDeclaration # | |
Defined in Language.PureScript.Externs Associated Types type Rep ExternsDeclaration :: Type -> Type # Methods from :: ExternsDeclaration -> Rep ExternsDeclaration x # to :: Rep ExternsDeclaration x -> ExternsDeclaration # | |
Show ExternsDeclaration # | |
Defined in Language.PureScript.Externs Methods showsPrec :: Int -> ExternsDeclaration -> ShowS # show :: ExternsDeclaration -> String # showList :: [ExternsDeclaration] -> ShowS # | |
Serialise ExternsDeclaration # | |
Defined in Language.PureScript.Externs Methods encode :: ExternsDeclaration -> Encoding # decode :: Decoder s ExternsDeclaration # encodeList :: [ExternsDeclaration] -> Encoding # decodeList :: Decoder s [ExternsDeclaration] # | |
type Rep ExternsDeclaration # | |
Defined in Language.PureScript.Externs type Rep ExternsDeclaration = D1 ('MetaData "ExternsDeclaration" "Language.PureScript.Externs" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) ((C1 ('MetaCons "EDType" 'PrefixI 'True) (S1 ('MetaSel ('Just "edTypeName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'TypeName)) :*: (S1 ('MetaSel ('Just "edTypeKind") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceType) :*: S1 ('MetaSel ('Just "edTypeDeclarationKind") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypeKind))) :+: (C1 ('MetaCons "EDTypeSynonym" 'PrefixI 'True) (S1 ('MetaSel ('Just "edTypeSynonymName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'TypeName)) :*: (S1 ('MetaSel ('Just "edTypeSynonymArguments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Text, Maybe SourceType)]) :*: S1 ('MetaSel ('Just "edTypeSynonymType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceType))) :+: C1 ('MetaCons "EDDataConstructor" 'PrefixI 'True) ((S1 ('MetaSel ('Just "edDataCtorName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'ConstructorName)) :*: S1 ('MetaSel ('Just "edDataCtorOrigin") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DataDeclType)) :*: (S1 ('MetaSel ('Just "edDataCtorTypeCtor") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'TypeName)) :*: (S1 ('MetaSel ('Just "edDataCtorType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceType) :*: S1 ('MetaSel ('Just "edDataCtorFields") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Ident])))))) :+: (C1 ('MetaCons "EDValue" 'PrefixI 'True) (S1 ('MetaSel ('Just "edValueName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: S1 ('MetaSel ('Just "edValueType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceType)) :+: (C1 ('MetaCons "EDClass" 'PrefixI 'True) ((S1 ('MetaSel ('Just "edClassName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProperName 'ClassName)) :*: (S1 ('MetaSel ('Just "edClassTypeArguments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Text, Maybe SourceType)]) :*: S1 ('MetaSel ('Just "edClassMembers") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Ident, SourceType)]))) :*: (S1 ('MetaSel ('Just "edClassConstraints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SourceConstraint]) :*: (S1 ('MetaSel ('Just "edFunctionalDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FunctionalDependency]) :*: S1 ('MetaSel ('Just "edIsEmpty") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) :+: C1 ('MetaCons "EDInstance" 'PrefixI 'True) (((S1 ('MetaSel ('Just "edInstanceClassName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Qualified (ProperName 'ClassName))) :*: S1 ('MetaSel ('Just "edInstanceName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident)) :*: (S1 ('MetaSel ('Just "edInstanceForAll") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Text, SourceType)]) :*: (S1 ('MetaSel ('Just "edInstanceKinds") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SourceType]) :*: S1 ('MetaSel ('Just "edInstanceTypes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SourceType])))) :*: ((S1 ('MetaSel ('Just "edInstanceConstraints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [SourceConstraint])) :*: S1 ('MetaSel ('Just "edInstanceChain") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ChainId))) :*: (S1 ('MetaSel ('Just "edInstanceChainIndex") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer) :*: (S1 ('MetaSel ('Just "edInstanceNameSource") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NameSource) :*: S1 ('MetaSel ('Just "edInstanceSourceSpan") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceSpan)))))))) |
data ImportDeclarationType #
The data type which specifies type of import declaration
Constructors
Implicit | An import with no explicit list: `import M`. |
Explicit [DeclarationRef] | An import with an explicit list of references to import: `import M (foo)` |
Hiding [DeclarationRef] | An import with a list of references to hide: `import M hiding (foo)` |
Instances
data NameSource #
Constructors
UserNamed | |
CompilerNamed |
Instances
type Precedence = Integer #
A precedence level for an infix operator
data NameVisibility #
The visibility of a name in scope
Constructors
Undefined | The name is defined in the current binding group, but is not visible |
Defined | The name is defined in the another binding group, or has been made visible by a function binder |
Instances
data TypeClassData #
Information about a type class
Constructors
TypeClassData | |
Fields
|
Instances
Generic TypeClassData # | |
Defined in Language.PureScript.Environment Associated Types type Rep TypeClassData :: Type -> Type # | |
Show TypeClassData # | |
Defined in Language.PureScript.Environment Methods showsPrec :: Int -> TypeClassData -> ShowS # show :: TypeClassData -> String # showList :: [TypeClassData] -> ShowS # | |
NFData TypeClassData # | |
Defined in Language.PureScript.Environment Methods rnf :: TypeClassData -> () # | |
type Rep TypeClassData # | |
Defined in Language.PureScript.Environment type Rep TypeClassData = D1 ('MetaData "TypeClassData" "Language.PureScript.Environment" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) (C1 ('MetaCons "TypeClassData" 'PrefixI 'True) ((S1 ('MetaSel ('Just "typeClassArguments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Text, Maybe SourceType)]) :*: (S1 ('MetaSel ('Just "typeClassMembers") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Ident, SourceType)]) :*: S1 ('MetaSel ('Just "typeClassSuperclasses") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SourceConstraint]))) :*: ((S1 ('MetaSel ('Just "typeClassDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FunctionalDependency]) :*: S1 ('MetaSel ('Just "typeClassDeterminedArguments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set Int))) :*: (S1 ('MetaSel ('Just "typeClassCoveringSets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set (Set Int))) :*: S1 ('MetaSel ('Just "typeClassIsEmpty") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))) |
The kinds of a type
Constructors
DataType DataDeclType [(Text, Maybe SourceType, Role)] [(ProperName 'ConstructorName, [SourceType])] | Data type |
TypeSynonym | Type synonym |
ExternData [Role] | Foreign data |
LocalTypeVariable | A local type variable |
ScopedTypeVar | A scoped type variable |
Instances
Generic TypeKind # | |
Show TypeKind # | |
NFData TypeKind # | |
Defined in Language.PureScript.Environment | |
Eq TypeKind # | |
Serialise TypeKind # | |
type Rep TypeKind # | |
Defined in Language.PureScript.Environment type Rep TypeKind = D1 ('MetaData "TypeKind" "Language.PureScript.Environment" "purescript-0.15.12-5l1zT9m1jq0GgrLEUvYibC" 'False) ((C1 ('MetaCons "DataType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DataDeclType) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Text, Maybe SourceType, Role)]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(ProperName 'ConstructorName, [SourceType])]))) :+: C1 ('MetaCons "TypeSynonym" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ExternData" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Role])) :+: (C1 ('MetaCons "LocalTypeVariable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ScopedTypeVar" 'PrefixI 'False) (U1 :: Type -> Type)))) |
The imported declarations for a module, including the module's own members.
Constructors
Imports | |
Fields
|
type UsedImports = Map ModuleName [Qualified Name] #
Map of module name to list of imported names from that module which have been used.
data ExportSource #
Constructors
ExportSource | |
Instances
The exported declarations from a module.
Constructors
Exports | |
Fields
|
data ImportRecord a #
The details for an import: the name of the thing that is being imported
(x
if importing from A
), the module that the thing was originally
defined in (for re-export resolution), and the import provenance (see below).
Constructors
ImportRecord | |
Fields |
Instances
Show a => Show (ImportRecord a) # | |
Defined in Language.PureScript.Sugar.Names.Env Methods showsPrec :: Int -> ImportRecord a -> ShowS # show :: ImportRecord a -> String # showList :: [ImportRecord a] -> ShowS # | |
Eq a => Eq (ImportRecord a) # | |
Defined in Language.PureScript.Sugar.Names.Env Methods (==) :: ImportRecord a -> ImportRecord a -> Bool # (/=) :: ImportRecord a -> ImportRecord a -> Bool # | |
Ord a => Ord (ImportRecord a) # | |
Defined in Language.PureScript.Sugar.Names.Env Methods compare :: ImportRecord a -> ImportRecord a -> Ordering # (<) :: ImportRecord a -> ImportRecord a -> Bool # (<=) :: ImportRecord a -> ImportRecord a -> Bool # (>) :: ImportRecord a -> ImportRecord a -> Bool # (>=) :: ImportRecord a -> ImportRecord a -> Bool # max :: ImportRecord a -> ImportRecord a -> ImportRecord a # min :: ImportRecord a -> ImportRecord a -> ImportRecord a # |
data WildcardData #
Describes how a TypeWildcard should be presented to the user during type checking: holes (?foo) are always emitted as errors, whereas unnamed wildcards (_) default to warnings, but are ignored entirely if they are contained by a binding with a complete (wildcard-free) type signature.
Constructors
HoleWildcard Text | |
UnnamedWildcard | |
IgnoredWildcard |
Instances
data DependencyDepth #
Constructors
Direct | |
Transitive |
data CheckState #
State required for type checking
Constructors
CheckState | |
Fields
|
data MakeActions m #
Actions that require implementations when running in "make" mode.
This type exists to make two things abstract:
- The particular backend being used (JavaScript, C++11, etc.)
- The details of how files are read/written etc.
Constructors
MakeActions | |
Fields
|
data RebuildPolicy #
Determines when to rebuild a module
Constructors
RebuildNever | Never rebuild this module |
RebuildAlways | Always rebuild this module |
Instances
Show RebuildPolicy # | |
Defined in Language.PureScript.Make.Actions Methods showsPrec :: Int -> RebuildPolicy -> ShowS # show :: RebuildPolicy -> String # showList :: [RebuildPolicy] -> ShowS # | |
Eq RebuildPolicy # | |
Defined in Language.PureScript.Make.Actions Methods (==) :: RebuildPolicy -> RebuildPolicy -> Bool # (/=) :: RebuildPolicy -> RebuildPolicy -> Bool # | |
Ord RebuildPolicy # | |
Defined in Language.PureScript.Make.Actions Methods compare :: RebuildPolicy -> RebuildPolicy -> Ordering # (<) :: RebuildPolicy -> RebuildPolicy -> Bool # (<=) :: RebuildPolicy -> RebuildPolicy -> Bool # (>) :: RebuildPolicy -> RebuildPolicy -> Bool # (>=) :: RebuildPolicy -> RebuildPolicy -> Bool # max :: RebuildPolicy -> RebuildPolicy -> RebuildPolicy # min :: RebuildPolicy -> RebuildPolicy -> RebuildPolicy # |
data ProgressMessage #
Progress messages from the make process
Constructors
CompilingModule ModuleName (Maybe (Int, Int)) | Compilation started for the specified module |
Instances
Show ProgressMessage # | |
Defined in Language.PureScript.Make.Actions Methods showsPrec :: Int -> ProgressMessage -> ShowS # show :: ProgressMessage -> String # showList :: [ProgressMessage] -> ShowS # | |
Eq ProgressMessage # | |
Defined in Language.PureScript.Make.Actions Methods (==) :: ProgressMessage -> ProgressMessage -> Bool # (/=) :: ProgressMessage -> ProgressMessage -> Bool # | |
Ord ProgressMessage # | |
Defined in Language.PureScript.Make.Actions Methods compare :: ProgressMessage -> ProgressMessage -> Ordering # (<) :: ProgressMessage -> ProgressMessage -> Bool # (<=) :: ProgressMessage -> ProgressMessage -> Bool # (>) :: ProgressMessage -> ProgressMessage -> Bool # (>=) :: ProgressMessage -> ProgressMessage -> Bool # max :: ProgressMessage -> ProgressMessage -> ProgressMessage # min :: ProgressMessage -> ProgressMessage -> ProgressMessage # |
type ModuleGraph = [(ModuleName, [ModuleName])] #
A list of modules with their transitive dependencies
data ModuleSignature #
A module signature for sorting dependencies.
Constructors
ModuleSignature | |
Fields
|
Constructors
AssocList | |
Fields
|
Instances
Foldable (AssocList k) # | |
Defined in Language.PureScript.AST.Declarations Methods fold :: Monoid m => AssocList k m -> m # foldMap :: Monoid m => (a -> m) -> AssocList k a -> m # foldMap' :: Monoid m => (a -> m) -> AssocList k a -> m foldr :: (a -> b -> b) -> b -> AssocList k a -> b # foldr' :: (a -> b -> b) -> b -> AssocList k a -> b # foldl :: (b -> a -> b) -> b -> AssocList k a -> b # foldl' :: (b -> a -> b) -> b -> AssocList k a -> b # foldr1 :: (a -> a -> a) -> AssocList k a -> a # foldl1 :: (a -> a -> a) -> AssocList k a -> a # toList :: AssocList k a -> [a] # null :: AssocList k a -> Bool # length :: AssocList k a -> Int # elem :: Eq a => a -> AssocList k a -> Bool # maximum :: Ord a => AssocList k a -> a # minimum :: Ord a => AssocList k a -> a # | |
Traversable (AssocList k) # | |
Defined in Language.PureScript.AST.Declarations | |
Functor (AssocList k) # | |
(Show k, Show t) => Show (AssocList k t) # | |
(Eq k, Eq t) => Eq (AssocList k t) # | |
(Ord k, Ord t) => Ord (AssocList k t) # | |
Defined in Language.PureScript.AST.Declarations Methods compare :: AssocList k t -> AssocList k t -> Ordering # (<) :: AssocList k t -> AssocList k t -> Bool # (<=) :: AssocList k t -> AssocList k t -> Bool # (>) :: AssocList k t -> AssocList k t -> Bool # (>=) :: AssocList k t -> AssocList k t -> Bool # |
Instances
Foldable PathNode # | |
Defined in Language.PureScript.AST.Declarations Methods fold :: Monoid m => PathNode m -> m # foldMap :: Monoid m => (a -> m) -> PathNode a -> m # foldMap' :: Monoid m => (a -> m) -> PathNode a -> m foldr :: (a -> b -> b) -> b -> PathNode a -> b # foldr' :: (a -> b -> b) -> b -> PathNode a -> b # foldl :: (b -> a -> b) -> b -> PathNode a -> b # foldl' :: (b -> a -> b) -> b -> PathNode a -> b # foldr1 :: (a -> a -> a) -> PathNode a -> a # foldl1 :: (a -> a -> a) -> PathNode a -> a # elem :: Eq a => a -> PathNode a -> Bool # maximum :: Ord a => PathNode a -> a # minimum :: Ord a => PathNode a -> a # | |
Traversable PathNode # | |
Defined in Language.PureScript.AST.Declarations | |
Functor PathNode # | |
Show t => Show (PathNode t) # | |
Eq t => Eq (PathNode t) # | |
Ord t => Ord (PathNode t) # | |
Defined in Language.PureScript.AST.Declarations |
Instances
Foldable PathTree # | |
Defined in Language.PureScript.AST.Declarations Methods fold :: Monoid m => PathTree m -> m # foldMap :: Monoid m => (a -> m) -> PathTree a -> m # foldMap' :: Monoid m => (a -> m) -> PathTree a -> m foldr :: (a -> b -> b) -> b -> PathTree a -> b # foldr' :: (a -> b -> b) -> b -> PathTree a -> b # foldl :: (b -> a -> b) -> b -> PathTree a -> b # foldl' :: (b -> a -> b) -> b -> PathTree a -> b # foldr1 :: (a -> a -> a) -> PathTree a -> a # foldl1 :: (a -> a -> a) -> PathTree a -> a # elem :: Eq a => a -> PathTree a -> Bool # maximum :: Ord a => PathTree a -> a # minimum :: Ord a => PathTree a -> a # | |
Traversable PathTree # | |
Defined in Language.PureScript.AST.Declarations | |
Functor PathTree # | |
Show t => Show (PathTree t) # | |
Eq t => Eq (PathTree t) # | |
Ord t => Ord (PathTree t) # | |
Defined in Language.PureScript.AST.Declarations |
data WhereProvenance #
Metadata that tells where a let binding originated
Constructors
FromWhere | The let binding was originally a where clause |
FromLet | The let binding was always a let binding |
Instances
Show WhereProvenance # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> WhereProvenance -> ShowS # show :: WhereProvenance -> String # showList :: [WhereProvenance] -> ShowS # |
data ImportProvenance #
Used to track how an import was introduced into scope. This allows us to handle the one-open-import special case that allows a name conflict to become a warning rather than being an unresolvable situation.
Constructors
FromImplicit | |
FromExplicit | |
Local | |
Prim |
Instances
Show ImportProvenance # | |
Defined in Language.PureScript.Sugar.Names.Env Methods showsPrec :: Int -> ImportProvenance -> ShowS # show :: ImportProvenance -> String # showList :: [ImportProvenance] -> ShowS # | |
Eq ImportProvenance # | |
Defined in Language.PureScript.Sugar.Names.Env Methods (==) :: ImportProvenance -> ImportProvenance -> Bool # (/=) :: ImportProvenance -> ImportProvenance -> Bool # | |
Ord ImportProvenance # | |
Defined in Language.PureScript.Sugar.Names.Env Methods compare :: ImportProvenance -> ImportProvenance -> Ordering # (<) :: ImportProvenance -> ImportProvenance -> Bool # (<=) :: ImportProvenance -> ImportProvenance -> Bool # (>) :: ImportProvenance -> ImportProvenance -> Bool # (>=) :: ImportProvenance -> ImportProvenance -> Bool # max :: ImportProvenance -> ImportProvenance -> ImportProvenance # min :: ImportProvenance -> ImportProvenance -> ImportProvenance # |
data KindSignatureFor #
What sort of declaration the kind signature applies to.
Constructors
DataSig | |
NewtypeSig | |
TypeSynonymSig | |
ClassSig |
Instances
data RoleDeclarationData #
A role declaration assigns a list of roles to a type constructor's parameters, e.g.:
type role T representational phantom
In this example, T
is the identifier and [representational, phantom]
is
the list of roles (T
presumably having two parameters).
Constructors
RoleDeclarationData | |
Fields
|
Instances
Show RoleDeclarationData # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> RoleDeclarationData -> ShowS # show :: RoleDeclarationData -> String # showList :: [RoleDeclarationData] -> ShowS # | |
Eq RoleDeclarationData # | |
Defined in Language.PureScript.AST.Declarations Methods (==) :: RoleDeclarationData -> RoleDeclarationData -> Bool # (/=) :: RoleDeclarationData -> RoleDeclarationData -> Bool # |
data InstanceDerivationStrategy #
Constructors
KnownClassStrategy | |
NewtypeStrategy |
Instances
Show InstanceDerivationStrategy # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> InstanceDerivationStrategy -> ShowS # show :: InstanceDerivationStrategy -> String # showList :: [InstanceDerivationStrategy] -> ShowS # |
newtype SkolemScope #
An identifier for the scope of a skolem variable
Constructors
SkolemScope | |
Fields |
Instances
type SynonymMap = Map (Qualified (ProperName 'TypeName)) ([(Text, Maybe SourceType)], SourceType) #
Type synonym information (arguments with kinds, aliased type), indexed by name
type KindMap = Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) #
data BindingGroupType #
Constructors
RecursiveBindingGroup | |
NonRecursiveBindingGroup |
Instances
Show BindingGroupType # | |
Defined in Language.PureScript.TypeChecker.Types Methods showsPrec :: Int -> BindingGroupType -> ShowS # show :: BindingGroupType -> String # showList :: [BindingGroupType] -> ShowS # | |
Eq BindingGroupType # | |
Defined in Language.PureScript.TypeChecker.Types Methods (==) :: BindingGroupType -> BindingGroupType -> Bool # (/=) :: BindingGroupType -> BindingGroupType -> Bool # | |
Ord BindingGroupType # | |
Defined in Language.PureScript.TypeChecker.Types Methods compare :: BindingGroupType -> BindingGroupType -> Ordering # (<) :: BindingGroupType -> BindingGroupType -> Bool # (<=) :: BindingGroupType -> BindingGroupType -> Bool # (>) :: BindingGroupType -> BindingGroupType -> Bool # (>=) :: BindingGroupType -> BindingGroupType -> Bool # max :: BindingGroupType -> BindingGroupType -> BindingGroupType # min :: BindingGroupType -> BindingGroupType -> BindingGroupType # |
data TypeSearch #
Holds the data necessary to do type directed search for typed holes
Constructors
TSBefore Environment | An Environment captured for later consumption by type directed search |
TSAfter | Results of applying type directed search to the previously captured Environment |
Fields
|
Instances
Show TypeSearch # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> TypeSearch -> ShowS # show :: TypeSearch -> String # showList :: [TypeSearch] -> ShowS # |
data HintCategory #
Categories of hints
Constructors
ExprHint | |
KindHint | |
CheckHint | |
PositionHint | |
SolverHint | |
DeclarationHint | |
OtherHint |
Instances
Show HintCategory # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> HintCategory -> ShowS # show :: HintCategory -> String # showList :: [HintCategory] -> ShowS # | |
Eq HintCategory # | |
Defined in Language.PureScript.AST.Declarations |
data ValueFixity #
Constructors
ValueFixity Fixity (Qualified (Either Ident (ProperName 'ConstructorName))) (OpName 'ValueOpName) |
Instances
Show ValueFixity # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> ValueFixity -> ShowS # show :: ValueFixity -> String # showList :: [ValueFixity] -> ShowS # | |
Eq ValueFixity # | |
Defined in Language.PureScript.AST.Declarations | |
Ord ValueFixity # | |
Defined in Language.PureScript.AST.Declarations Methods compare :: ValueFixity -> ValueFixity -> Ordering # (<) :: ValueFixity -> ValueFixity -> Bool # (<=) :: ValueFixity -> ValueFixity -> Bool # (>) :: ValueFixity -> ValueFixity -> Bool # (>=) :: ValueFixity -> ValueFixity -> Bool # max :: ValueFixity -> ValueFixity -> ValueFixity # min :: ValueFixity -> ValueFixity -> ValueFixity # |
data TypeFixity #
Constructors
TypeFixity Fixity (Qualified (ProperName 'TypeName)) (OpName 'TypeOpName) |
Instances
Show TypeFixity # | |
Defined in Language.PureScript.AST.Declarations Methods showsPrec :: Int -> TypeFixity -> ShowS # show :: TypeFixity -> String # showList :: [TypeFixity] -> ShowS # | |
Eq TypeFixity # | |
Defined in Language.PureScript.AST.Declarations | |
Ord TypeFixity # | |
Defined in Language.PureScript.AST.Declarations Methods compare :: TypeFixity -> TypeFixity -> Ordering # (<) :: TypeFixity -> TypeFixity -> Bool # (<=) :: TypeFixity -> TypeFixity -> Bool # (>) :: TypeFixity -> TypeFixity -> Bool # (>=) :: TypeFixity -> TypeFixity -> Bool # max :: TypeFixity -> TypeFixity -> TypeFixity # min :: TypeFixity -> TypeFixity -> TypeFixity # |
data ScopedIdent #
Constructors
LocalIdent Ident | |
ToplevelIdent Ident |
Instances
Show ScopedIdent # | |
Defined in Language.PureScript.AST.Traversals Methods showsPrec :: Int -> ScopedIdent -> ShowS # show :: ScopedIdent -> String # showList :: [ScopedIdent] -> ShowS # | |
Eq ScopedIdent # | |
Defined in Language.PureScript.AST.Traversals | |
Ord ScopedIdent # | |
Defined in Language.PureScript.AST.Traversals Methods compare :: ScopedIdent -> ScopedIdent -> Ordering # (<) :: ScopedIdent -> ScopedIdent -> Bool # (<=) :: ScopedIdent -> ScopedIdent -> Bool # (>) :: ScopedIdent -> ScopedIdent -> Bool # (>=) :: ScopedIdent -> ScopedIdent -> Bool # max :: ScopedIdent -> ScopedIdent -> ScopedIdent # min :: ScopedIdent -> ScopedIdent -> ScopedIdent # |
newtype ErrorSuggestion #
Constructors
ErrorSuggestion Text |
data PPEOptions #
prettyPrintSingleError
Options
Constructors
PPEOptions | |
Fields
|
pattern ByNullSourcePos :: QualifiedBy #
pattern ValueDecl :: SourceAnn -> Ident -> NameKind -> [Binder] -> [GuardedExpr] -> Declaration #
pattern MkUnguarded :: Expr -> GuardedExpr #
pattern NullSourceSpan :: SourceSpan #
pattern REmptyKinded :: forall a. a -> Maybe (Type a) -> Type a #
pattern TypeFixityDeclaration :: SourceAnn -> Fixity -> Qualified (ProperName 'TypeName) -> OpName 'TypeOpName -> Declaration #
pattern ValueFixityDeclaration :: SourceAnn -> Fixity -> Qualified (Either Ident (ProperName 'ConstructorName)) -> OpName 'ValueOpName -> Declaration #
pattern NullSourceAnn :: SourceAnn #
function :: SourceType -> SourceType -> SourceType #
Smart constructor for function types
internalError :: HasCallStack => String -> a #
Exit with an error message and a crash report link.
errorMessage :: SimpleErrorMessage -> MultipleErrors #
Create an error set from a single simple error message
copyFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> FilePath -> m () #
Copy a file in the Make
monad, capturing any errors using the
MonadError
instance.
nonEmpty :: MultipleErrors -> Bool #
Check whether a collection of errors is empty or not.
exportedDeclarations :: Module -> [Declaration] #
Return a list of all declarations which are exported from a module. This function descends into data declarations to filter out unexported data constructors, and also filters out type instance declarations if they refer to classes or types which are not themselves exported.
Note that this function assumes that the module has already had its imports
desugared using desugarImports
. It will
produce incorrect results if this is not the case - for example, type class
instances will be incorrectly removed in some cases.
The returned declarations are in the same order as they appear in the export list, unless there is no export list, in which case they appear in the same order as they do in the source file.
Kind signatures declarations are also exported if their associated declaration is exported.
isExported :: Maybe [DeclarationRef] -> Declaration -> Bool #
Test if a declaration is exported, given a module's export list. Note that
this function does not account for type instance declarations of
non-exported types, or non-exported data constructors. Therefore, you should
prefer exportedDeclarations
to this function, where possible.
declName :: Declaration -> Maybe Name #
declRefName :: DeclarationRef -> Name #
flattenDecls :: [Declaration] -> [Declaration] #
Recursively flatten data binding groups in the list of declarations
everythingOnTypes :: (r -> r -> r) -> (Type a -> r) -> Type a -> r #
coerceProperName :: ProperName a -> ProperName b #
Coerces a ProperName from one ProperNameType to another. This should be used with care, and is primarily used to convert ClassNames into TypeNames after classes have been desugared.
disqualify :: Qualified a -> a #
Remove the module name from a qualified name
isQualified :: Qualified a -> Bool #
Checks whether a qualified value is actually qualified with a module reference
isQualifiedWith :: ModuleName -> Qualified a -> Bool #
Checks whether a qualified value is qualified with a particular module
binderNames :: Binder -> [Ident] #
Collect all names introduced in binders in an expression
mapTypeInstanceBody :: ([Declaration] -> [Declaration]) -> TypeInstanceBody -> TypeInstanceBody #
traverseTypeInstanceBody :: Applicative f => ([Declaration] -> f [Declaration]) -> TypeInstanceBody -> f TypeInstanceBody #
A traversal for TypeInstanceBody
mapConstraintArgs :: ([Type a] -> [Type a]) -> Constraint a -> Constraint a #
guardedExprM :: Applicative m => (Guard -> m Guard) -> (Expr -> m Expr) -> GuardedExpr -> m GuardedExpr #
displayStartEndPos :: SourceSpan -> Text #
rethrow :: MonadError e m => (e -> e) -> m a -> m a #
Rethrow an error with a more detailed error message in the case of failure
errorMessage' :: SourceSpan -> SimpleErrorMessage -> MultipleErrors #
Create an error set from a single simple error message and source annotation
rethrowWithPosition :: MonadError MultipleErrors m => SourceSpan -> m a -> m a #
Rethrow an error with source position information
addHint :: ErrorMessageHint -> MultipleErrors -> MultipleErrors #
Add a hint to an error message
runModuleName :: ModuleName -> Text #
showQualified :: (a -> Text) -> Qualified a -> Text #
unusedIdent :: Text #
everywhereOnValues :: (Declaration -> Declaration) -> (Expr -> Expr) -> (Binder -> Binder) -> (Declaration -> Declaration, Expr -> Expr, Binder -> Binder) #
dictTypeName :: ProperName a -> ProperName a #
freshIdent :: MonadSupply m => Text -> m Ident #
everythingOnValues :: forall r. (r -> r -> r) -> (Declaration -> r) -> (Expr -> r) -> (Binder -> r) -> (CaseAlternative -> r) -> (DoNotationElement -> r) -> (Declaration -> r, Expr -> r, Binder -> r, CaseAlternative -> r, DoNotationElement -> r) #
isDictTypeName :: ProperName a -> Bool #
lookupConstructor :: Environment -> Qualified (ProperName 'ConstructorName) -> (DataDeclType, ProperName 'TypeName, SourceType, [Ident]) #
Finds information about data constructors from the current environment.
lookupValue :: Environment -> Qualified Ident -> Maybe (SourceType, NameKind, NameVisibility) #
Finds information about values from the current environment.
getQual :: Qualified a -> Maybe ModuleName #
evalSupplyT :: Functor m => Integer -> SupplyT m a -> m a #
convertPrettyPrintType :: Int -> Type a -> PrettyPrintType #
prettyPrintLabel :: Label -> Text #
displayRole :: Role -> Text #
prettyPrintString :: PSString -> Text #
Pretty print a PSString, using PureScript escape sequences.
moduleNameFromString :: Text -> ModuleName #
srcTypeConstructor :: Qualified (ProperName 'TypeName) -> SourceType #
prettyPrintBinderAtom :: Binder -> Text #
prettyPrintObjectKey :: PSString -> Text #
prettyPrintSuggestedType :: Type a -> String #
Generate a pretty-printed string representing a suggested Type
prettyPrintValue :: Int -> Expr -> Box #
Pretty-print an expression
typeAtomAsBox :: Int -> Type a -> Box #
typeDiffAsBox :: Int -> Type a -> Box #
eraseForAllKindAnnotations :: Type a -> Type a #
eraseKindApps :: Type a -> Type a #
getAnnForType :: Type a -> a #
isMonoType :: Type a -> Bool #
Check whether a type is a monotype
overConstraintArgs :: Functor f => ([Type a] -> f [Type a]) -> Constraint a -> f (Constraint a) #
rowFromList :: ([RowListItem a], Type a) -> Type a #
Convert a list of labels and types to a row
rowToList :: Type a -> ([RowListItem a], Type a) #
Convert a row to a list of pairs of labels and types
srcTUnknown :: Int -> SourceType #
externsIsCurrentVersion :: ExternsFile -> Bool #
Check whether the version in an externs file matches the currently running version.
moduleToExternsFile :: Module -> Environment -> Map Ident Ident -> ExternsFile #
Generate an externs file for all declarations in a module.
The `Map Ident Ident` argument should contain any top-level GenIdent
s that
were rewritten to Ident
s when the module was compiled; this rewrite only
happens in the CoreFn, not the original module AST, so it needs to be
applied to the exported names here also. (The appropriate map is returned by
renameInModule
.)
applyExternsFileToEnvironment :: ExternsFile -> Environment -> Environment #
Convert an externs file back into a module
getTypeOpRef :: DeclarationRef -> Maybe (OpName 'TypeOpName) #
getValueOpRef :: DeclarationRef -> Maybe (OpName 'ValueOpName) #
makeTypeClassData :: [(Text, Maybe SourceType)] -> [(Ident, SourceType)] -> [SourceConstraint] -> [FunctionalDependency] -> Bool -> TypeClassData #
A constructor for TypeClassData that computes which type class arguments are fully determined and argument covering sets. Fully determined means that this argument cannot be used when selecting a type class instance. A covering set is a minimal collection of arguments that can be used to find an instance and therefore determine all other type arguments.
An example of the difference between determined and fully determined would be with the class:
```class C a b c | a -> b, b -> a, b -> c```
In this case, a
must differ when b
differs, and vice versa - each is determined by the other.
Both a
and b
can be used in selecting a type class instance. However, c
cannot - it is
fully determined by a
and b
.
Define a graph of type class arguments with edges being fundep determiners to determined. Each argument also has a self looping edge. An argument is fully determined if doesn't appear at the start of a path of strongly connected components. An argument is not fully determined otherwise.
The way we compute this is by saying: an argument X is fully determined if there are arguments that determine X that X does not determine. This is the same thing: everything X determines includes everything in its SCC, and everything determining X is either before it in an SCC path, or in the same SCC.
isPlainIdent :: Ident -> Bool #
srcInstanceType :: SourceSpan -> [(Text, SourceType)] -> Qualified (ProperName 'ClassName) -> [SourceType] -> SourceType #
Construct the type of an instance declaration from its parts. Used in error messages describing unnamed instances.
graph :: [FilePath] -> IO (Either MultipleErrors Value, MultipleErrors) #
Given a set of filepaths, try to build the dependency graph and return that as its JSON representation (or a bunch of errors, if any)
ffiCodegen' :: Map ModuleName FilePath -> Set CodegenTarget -> Maybe (ModuleName -> String -> FilePath) -> Module Ann -> Make () #
FFI check and codegen action. If path maker is supplied copies foreign module to the output.
cacheDbFile :: FilePath -> FilePath #
Given the output directory, determines the location for the CacheDb file
make :: forall m. (MonadBaseControl IO m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => MakeActions m -> [PartialResult Module] -> m [ExternsFile] #
Compiles in "make" mode, compiling each module separately to a .js
file and an externs.cbor
file.
If timestamps or hashes have not changed, existing externs files can be used to provide upstream modules' types without having to typecheck those modules again.
runMake :: Options -> Make a -> IO (Either MultipleErrors a, MultipleErrors) #
Execute a Make
monad, returning either errors, or the result of the compile plus any warnings.
lint :: forall m. MonadWriter MultipleErrors m => Module -> m () #
Lint the PureScript AST. | | Right now, this pass performs a shadowing check and a check for unused bindings.
getIdentName :: Name -> Maybe Ident #
everythingWithContextOnTypes :: s -> r -> (r -> r -> r) -> (s -> Type a -> (s, r)) -> Type a -> r #
checkExhaustiveExpr :: forall m. MonadWriter MultipleErrors m => SourceSpan -> Environment -> ModuleName -> Expr -> m Expr #
Exhaustivity checking
isTrueExpr :: Expr -> Bool #
everywhereOnValuesM :: forall m. Monad m => (Declaration -> m Declaration) -> (Expr -> m Expr) -> (Binder -> m Binder) -> (Declaration -> m Declaration, Expr -> m Expr, Binder -> m Binder) #
lintImports :: forall m. MonadWriter MultipleErrors m => Module -> Env -> UsedImports -> m () #
Find and warn on:
- Unused import statements (qualified or unqualified)
- Unused references in an explicit import list
- Implicit imports of modules
- Implicit imports into a virtual module (unless the virtual module only has members from one module imported)
- Imports using
hiding
(this is another form of implicit importing)
getTypeRef :: DeclarationRef -> Maybe (ProperName 'TypeName, Maybe [ProperName 'ConstructorName]) #
isExplicit :: ImportDeclarationType -> Bool #
everywhereWithContextOnValues :: forall s. s -> (s -> Declaration -> (s, Declaration)) -> (s -> Expr -> (s, Expr)) -> (s -> Binder -> (s, Binder)) -> (s -> CaseAlternative -> (s, CaseAlternative)) -> (s -> DoNotationElement -> (s, DoNotationElement)) -> (s -> Guard -> (s, Guard)) -> (Declaration -> Declaration, Expr -> Expr, Binder -> Binder, CaseAlternative -> CaseAlternative, DoNotationElement -> DoNotationElement, Guard -> Guard) #
rebuildModule :: forall m. (MonadBaseControl IO m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => MakeActions m -> [ExternsFile] -> Module -> m ExternsFile #
Rebuild a single module.
This function is used for fast-rebuild workflows (PSCi and psc-ide are examples).
rebuildModule' :: forall m. (MonadBaseControl IO m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => MakeActions m -> Env -> [ExternsFile] -> Module -> m ExternsFile #
inferForeignModules :: forall m. MonadIO m => Map ModuleName (Either RebuildPolicy FilePath) -> m (Map ModuleName FilePath) #
Infer the module name for a module by looking for the same filename with a .js extension.
runSupplyT :: Integer -> SupplyT m a -> m (a, Integer) #
getModuleName :: Module -> ModuleName #
Return a module's name.
getModuleSourceSpan :: Module -> SourceSpan #
Return a module's source span.
importPrim :: Module -> Module #
Adds import declarations to a module for an implicit Prim import and Prim | qualified as Prim, as necessary.
initEnvironment :: Environment #
The initial environment with no values and only the default javascript types defined
defaultPPEOptions :: PPEOptions #
Default options for PPEOptions
errorMessage'' :: NonEmpty SourceSpan -> SimpleErrorMessage -> MultipleErrors #
Create an error set from a single simple error message and source annotations
prettyPrintMultipleErrors :: PPEOptions -> MultipleErrors -> String #
Pretty print multiple errors
sortModules :: forall m a. MonadError MultipleErrors m => DependencyDepth -> (a -> ModuleSignature) -> [a] -> m ([a], ModuleGraph) #
Sort a collection of modules based on module dependencies.
Reports an error if the module graph contains a cycle.
isBuiltinModuleName :: ModuleName -> Bool #
renameInModule :: Module Ann -> (Map Ident Ident, Module Ann) #
Renames within each declaration in a module. Returns the map of renamed identifiers in the top-level scope, so that they can be renamed in the externs files as well.
collapseBindingGroups :: [Declaration] -> [Declaration] #
Collapse all binding groups to individual declarations
createBindingGroups :: forall m. MonadError MultipleErrors m => ModuleName -> [Declaration] -> m [Declaration] #
desugar :: MonadSupply m => MonadError MultipleErrors m => MonadWriter MultipleErrors m => MonadState (Env, UsedImports) m => [ExternsFile] -> Module -> m Module #
The desugaring pipeline proceeds as follows:
- Remove signed literals in favour of
negate
applications - Desugar object literals with wildcards into lambdas
- Desugar operator sections
- Desugar do-notation
- Desugar ado-notation
- Desugar top-level case declarations into explicit case expressions
- Desugar type declarations into value declarations with explicit type annotations
- Qualify any unqualified names and types
- Rebracket user-defined binary operators
- Introduce newtypes for type class dictionaries and value declarations for instances
- Group mutually recursive value and data declarations into binding groups.
desugarCaseGuards :: forall m. (MonadSupply m, MonadError MultipleErrors m) => [Declaration] -> m [Declaration] #
externsEnv :: forall m. (MonadError MultipleErrors m, MonadWriter MultipleErrors m) => Env -> ExternsFile -> m Env #
Create an environment from a collection of externs files
emptyCheckState :: Environment -> CheckState #
Create an empty CheckState
typeCheckModule :: forall m. (MonadSupply m, MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => Map ModuleName Exports -> Module -> m Module #
Type check an entire module and ensure all types and classes defined within the module that are required by exported members are also exported.
renderProgressMessage :: Text -> ProgressMessage -> Text #
Render a progress message
Arguments
:: FilePath | the output directory |
-> Map ModuleName (Either RebuildPolicy FilePath) | a map between module names and paths to the file containing the PureScript module |
-> Map ModuleName FilePath | a map between module name and the file containing the foreign javascript for the module |
-> Bool | Generate a prefix comment? |
-> MakeActions Make |
A set of make actions that read and write modules from the given directory.
checkForeignDecls :: Module ann -> FilePath -> Make (Either MultipleErrors (ForeignModuleType, Set Ident)) #
Check that the declarations in a given PureScript module match with those in its corresponding foreign module.
Arguments
:: (MonadIO m, MonadError MultipleErrors m) | |
=> FilePath | The path to the output directory |
-> m CacheDb |
Arguments
:: (MonadIO m, MonadError MultipleErrors m) | |
=> FilePath | The path to the output directory |
-> CacheDb | The CacheDb to be written |
-> m () |
getTimestamp :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m UTCTime #
Get a file's modification time in the Make
monad, capturing any errors
using the MonadError
instance.
getTimestampMaybe :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m (Maybe UTCTime) #
Get a file's modification time in the Make
monad, returning Nothing if
the file does not exist.
hashFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m ContentHash #
makeIO :: (MonadIO m, MonadError MultipleErrors m) => Text -> IO a -> m a #
readExternsFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m (Maybe ExternsFile) #
Read an externs file, returning Nothing
if the file does not exist,
could not be parsed, or was generated by a different version of the
compiler.
readJSONFile :: (MonadIO m, MonadError MultipleErrors m) => FromJSON a => FilePath -> m (Maybe a) #
Read a JSON file in the Make
monad, returning Nothing
if the file does
not exist or could not be parsed. Errors are captured using the MonadError
instance.
readTextFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m Text #
Read a text file strictly in the Make
monad, capturing any errors using
the MonadError
instance.
writeCborFile :: (MonadIO m, MonadError MultipleErrors m) => Serialise a => FilePath -> a -> m () #
writeJSONFile :: (MonadIO m, MonadError MultipleErrors m) => ToJSON a => FilePath -> a -> m () #
Write a JSON file in the Make
monad, capturing any errors using the
MonadError
instance.
writeTextFile :: FilePath -> ByteString -> Make () #
Write a text file in the Make
monad, capturing any errors using the
MonadError
instance.
readCborFile :: (MonadIO m, MonadError MultipleErrors m) => Serialise a => FilePath -> m (Maybe a) #
Read a Cbor encoded file in the Make
monad, returning
Nothing
if the file does not exist or could not be parsed. Errors
are captured using the MonadError
instance.
writeCborFileIO :: Serialise a => FilePath -> a -> IO () #
singleError :: ErrorMessage -> MultipleErrors #
Create an error set from a single error message
parU :: forall m a b. MonadError MultipleErrors m => [a] -> (a -> m b) -> m [b] #
Collect errors in in parallel
prettyPrintType :: Int -> Type a -> String #
Generate a pretty-printed string representing a Type
prettyPrintTypeWithUnicode :: Int -> Type a -> String #
Generate a pretty-printed string representing a Type
using unicode
symbols where applicable
prettyPrintTypeAtom :: Int -> Type a -> String #
Generate a pretty-printed string representing a Type, as it should appear inside parentheses
Type constructor for functions
tyRecord :: SourceType #
Type constructor for records
rowToSortedList :: Type a -> ([RowListItem a], Type a) #
Convert a row to a list of pairs of labels and types, sorted by the labels.
prettyPrintBinder :: Binder -> Text #
Generate a pretty-printed string representing a Binder
isBySourcePos :: QualifiedBy -> Bool #
desugarAdoModule :: forall m. (MonadSupply m, MonadError MultipleErrors m) => Module -> m Module #
Replace all AdoNotationBind
and AdoNotationValue
constructors with
applications of the pure and apply functions in scope, and all AdoNotationLet
constructors with let expressions.
declSourceSpan :: Declaration -> SourceSpan #
freshIdent' :: MonadSupply m => m Ident #
createBindingGroupsModule :: MonadError MultipleErrors m => Module -> m Module #
Replace all sets of mutually-recursive declarations in a module with binding groups
desugarCases :: forall m. (MonadSupply m, MonadError MultipleErrors m) => [Declaration] -> m [Declaration] #
Replace all top-level binders with case expressions.
desugarCasesModule :: (MonadSupply m, MonadError MultipleErrors m) => Module -> m Module #
Replace all top-level binders in a module with case expressions.
withPosition :: SourceSpan -> ErrorMessage -> ErrorMessage #
guardWith :: MonadError e m => e -> Bool -> m () #
Make an assertion, failing with an error message
desugarDoModule :: forall m. (MonadSupply m, MonadError MultipleErrors m) => Module -> m Module #
Replace all DoNotationBind
and DoNotationValue
constructors with
applications of the bind function in scope, and all DoNotationLet
constructors with let expressions.
desugarLetPatternModule :: Module -> Module #
Replace every BoundValueDeclaration
in Let
expressions with Case
expressions.
desugarImports :: forall m. (MonadError MultipleErrors m, MonadWriter MultipleErrors m, MonadState (Env, UsedImports) m) => Module -> m Module #
Replaces all local names with qualified names.
warnAndRethrow :: (MonadError e m, MonadWriter e m) => (e -> e) -> m a -> m a #
warnAndRethrowWithPosition :: (MonadError MultipleErrors m, MonadWriter MultipleErrors m) => SourceSpan -> m a -> m a #
warnWithPosition :: MonadWriter MultipleErrors m => SourceSpan -> m a -> m a #
internalModuleSourceSpan :: String -> SourceSpan #
disqualifyFor :: Maybe ModuleName -> Qualified a -> Maybe a #
Remove the qualification from a value when it is qualified with a particular module name.
isUnqualified :: Qualified a -> Bool #
Checks whether a qualified value is not actually qualified with a module reference
desugarObjectConstructors :: forall m. (MonadSupply m, MonadError MultipleErrors m) => Module -> m Module #
desugarDecl :: forall m. (MonadSupply m, MonadError MultipleErrors m) => Declaration -> m Declaration #
desugarSignedLiterals :: Module -> Module #
Removes unary negation operators and replaces them with calls to negate
.
rebracket :: forall m. MonadError MultipleErrors m => MonadSupply m => [ExternsFile] -> Module -> m Module #
Remove explicit parentheses and reorder binary operator applications.
This pass requires name desugaring and export elaboration to have run first.
rebracketFiltered :: forall m. MonadError MultipleErrors m => MonadSupply m => RebracketCaller -> (Declaration -> Bool) -> [ExternsFile] -> Module -> m Module #
A version of rebracket
which allows you to choose which declarations
should be affected. This is used in docs generation, where we want to
desugar type operators in instance declarations to ensure that instances are
paired up with their types correctly, but we don't want to desugar type
operators in value declarations.
checkFixityExports :: forall m. MonadError MultipleErrors m => Module -> m Module #
Checks all the fixity exports within a module to ensure that members aliased by the operators are also exported from the module.
This pass requires name desugaring and export elaboration to have run first.
eraseOpName :: OpName a -> OpName 'AnyOpName #
srcTypeApp :: SourceType -> SourceType -> SourceType #
desugarTypeClasses :: (MonadSupply m, MonadError MultipleErrors m) => [ExternsFile] -> Module -> m Module #
Add type synonym declarations for type class dictionary types, and value declarations for type class instance dictionary expressions.
typeClassMemberName :: Declaration -> Text #
superClassDictionaryNames :: [Constraint a] -> [Text] #
primClasses :: Map (Qualified (ProperName 'ClassName)) TypeClassData #
The primitive class map. This just contains the Partial
class.
Partial
is used as a kind of magic constraint for partial functions.
qualify :: ModuleName -> Qualified a -> (ModuleName, a) #
Provide a default module name, if a name is unqualified
deriveInstances :: forall m. (MonadError MultipleErrors m, MonadSupply m) => Module -> m Module #
Elaborates deriving instance declarations by code generation.
checkNewtype :: forall m. MonadError MultipleErrors m => ProperName 'TypeName -> [DataConstructorDeclaration] -> m (DataConstructorDeclaration, (Ident, SourceType)) #
Check that a newtype has just one data constructor with just one field, or
throw an error. If the newtype is valid, this function returns the single
data constructor declaration and the single field, as a proof
that the
newtype was indeed a valid newtype.
desugarTypeDeclarationsModule :: forall m. MonadError MultipleErrors m => Module -> m Module #
Replace all top level type declarations in a module with type annotations
everywhereOnValuesTopDownM :: forall m. Monad m => (Declaration -> m Declaration) -> (Expr -> m Expr) -> (Binder -> m Binder) -> (Declaration -> m Declaration, Expr -> m Expr, Binder -> m Binder) #
nominalRolesForKind :: Type a -> [Role] #
Given the kind of a type, generate a list Nominal
roles. This is used for
opaque foreign types as well as type classes.
mkQualified :: a -> ModuleName -> Qualified a #
Makes a qualified value from a name and module name.
containsForAll :: Type a -> Bool #
Check if a type contains forall
freeTypeVariables :: Type a -> [Text] #
Collect all free type variables appearing in a type
kindType :: SourceType #
Kind of ground types
(-:>) :: SourceType -> SourceType -> SourceType infixr 4 #
internalCompilerError :: (MonadError MultipleErrors m, HasCallStack) => Text -> m a #
getEnv :: MonadState CheckState m => m Environment #
Get the current Environment
getTypeClassDictionaries :: MonadState CheckState m => m (Map QualifiedBy (Map (Qualified (ProperName 'ClassName)) (Map (Qualified Ident) (NonEmpty NamedDict)))) #
Get the currently available map of type class dictionaries
unsafeCheckCurrentModule :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => m ModuleName #
replaceAllTypeSynonyms :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => SourceType -> m SourceType #
Replace fully applied type synonyms
completeBinderList :: Type a -> Maybe ([(a, (Text, Type a))], Type a) #
Collect a complete set of kind-annotated quantifiers at the front of a type.
srcTypeVar :: Text -> SourceType #
usedTypeVariables :: Type a -> [Text] #
Collect all type variables appearing in a type
kindRow :: SourceType -> SourceType #
tyBoolean :: SourceType #
Type constructor for booleans
tyInt :: SourceType #
Type constructor for integers
tyString :: SourceType #
Type constructor for strings
addHints :: [ErrorMessageHint] -> MultipleErrors -> MultipleErrors #
Add hints to an error message
elaborateKind :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> m SourceType #
unifyKinds' :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> SourceType -> m () #
Does not attach positions to the error node, instead relies on the | local position context. This is useful when invoking kind unification | outside of kind checker internals.
withErrorMessageHint :: (MonadState CheckState m, MonadError MultipleErrors m) => ErrorMessageHint -> m a -> m a #
unapplyKinds :: Type a -> ([Type a], Type a) #
freshKindWithKind :: MonadState CheckState m => SourceSpan -> SourceType -> m SourceType #
lookupRoles :: Environment -> Qualified (ProperName 'TypeName) -> [Role] #
Lookup the roles for a type in the environment. If the type does not have roles (e.g. is a type synonym or a type variable), then this function returns an empty list.
alignRowsWith :: (Label -> Type a -> Type a -> r) -> Type a -> Type a -> ([r], (([RowListItem a], Type a), ([RowListItem a], Type a))) #
Align two rows of types, splitting them into three parts:
- Those types which appear in both rows
- Those which appear only on the left
- Those which appear only on the right
Note: importantly, we preserve the order of the types with a given label.
containsUnknowns :: Type a -> Bool #
Check if a type contains unknowns in a position that is relevant to constraint solving. (Kinds are not.)
srcConstraint :: Qualified (ProperName 'ClassName) -> [SourceType] -> [SourceType] -> Maybe ConstraintData -> SourceConstraint #
kindOf :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> m (SourceType, SourceType) #
Infer the kind of a single type
kindOfWithUnknowns :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> m (([(Unknown, SourceType)], SourceType), SourceType) #
kindOfWithScopedVars :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> m (([(Text, SourceType)], SourceType), SourceType) #
Infer the kind of a single type, returning the kinds of any scoped type variables
kindOfData :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> DataDeclarationArgs -> m DataDeclarationResult #
kindOfTypeSynonym :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> TypeDeclarationArgs -> m TypeDeclarationResult #
kindOfClass :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> ClassDeclarationArgs -> m ClassDeclarationResult #
kindsOfAll :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> [TypeDeclarationArgs] -> [DataDeclarationArgs] -> [ClassDeclarationArgs] -> m ([TypeDeclarationResult], [DataDeclarationResult], [ClassDeclarationResult]) #
unifyKinds :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> SourceType -> m () #
subsumesKind :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> SourceType -> m () #
instantiateKind :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => (SourceType, SourceType) -> SourceType -> m SourceType #
checkKind :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> SourceType -> m SourceType #
inferKind :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> m (SourceType, SourceType) #
checkConstraint :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => SourceConstraint -> m SourceConstraint #
checkInstanceDeclaration :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> InstanceDeclarationArgs -> m InstanceDeclarationResult #
checkKindDeclaration :: forall m. (MonadSupply m, MonadError MultipleErrors m, MonadState CheckState m) => ModuleName -> SourceType -> m SourceType #
checkTypeKind :: (MonadError MultipleErrors m, MonadState CheckState m, HasCallStack) => SourceType -> SourceType -> m () #
Check the kind of a type, failing if it is not of kind *.
unknownsWithKinds :: forall m. (MonadState CheckState m, MonadError MultipleErrors m, HasCallStack) => [Unknown] -> m [(Unknown, SourceType)] #
freshKind :: MonadState CheckState m => SourceSpan -> m SourceType #
bindLocalTypeVariables :: MonadState CheckState m => ModuleName -> [(ProperName 'TypeName, SourceType)] -> m a -> m a #
Temporarily bind a collection of names to local type variables
lookupTypeVariable :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => ModuleName -> Qualified (ProperName 'TypeName) -> m SourceType #
Lookup the kind of a type by name in the Environment
withFreshSubstitution :: MonadState CheckState m => m a -> m a #
srcKindedType :: SourceType -> SourceType -> SourceType #
Arguments
:: forall m. MonadError MultipleErrors m | |
=> [(Text, Maybe SourceType, Role)] | type parameters for the data type whose roles we are checking |
-> [Role] | roles declared for the data type |
-> m () |
Compares the inferred roles to the explicitly declared roles and ensures that the explicitly declared roles are not more permissive than the inferred ones.
checkRoleDeclarationArity :: forall m. MonadError MultipleErrors m => ProperName 'TypeName -> [Role] -> Int -> m () #
Arguments
:: Environment | |
-> ModuleName | |
-> ProperName 'TypeName | The name of the data type whose roles we are checking |
-> [(Text, Maybe SourceType)] | type parameters for the data type whose roles we are checking |
-> [DataConstructorDeclaration] | constructors of the data type whose roles we are checking |
-> [Role] |
Infers roles for the given data type declaration.
inferDataBindingGroupRoles :: Environment -> ModuleName -> [RoleDeclarationData] -> [DataDeclaration] -> ProperName 'TypeName -> [(Text, Maybe SourceType)] -> [Role] #
everythingWithContextOnValues :: forall s r. s -> r -> (r -> r -> r) -> (s -> Declaration -> (s, r)) -> (s -> Expr -> (s, r)) -> (s -> Binder -> (s, r)) -> (s -> CaseAlternative -> (s, r)) -> (s -> DoNotationElement -> (s, r)) -> (Declaration -> r, Expr -> r, Binder -> r, CaseAlternative -> r, DoNotationElement -> r) #
everywhereWithContextOnValuesM :: forall m s. Monad m => s -> (s -> Declaration -> m (s, Declaration)) -> (s -> Expr -> m (s, Expr)) -> (s -> Binder -> m (s, Binder)) -> (s -> CaseAlternative -> m (s, CaseAlternative)) -> (s -> DoNotationElement -> m (s, DoNotationElement)) -> (s -> Guard -> m (s, Guard)) -> (Declaration -> m Declaration, Expr -> m Expr, Binder -> m Binder, CaseAlternative -> m CaseAlternative, DoNotationElement -> m DoNotationElement, Guard -> m Guard) #
nonEmptySpan :: SourceAnn -> Maybe SourceSpan #
replaceTypeVars :: Text -> Type a -> Type a -> Type a #
Replace a type variable, taking into account variable shadowing
getHints :: MonadState CheckState m => m [ErrorMessageHint] #
These hints are added at the front, so the most nested hint occurs at the front, but the simplifier assumes the reverse order.
replaceAllTypeSynonymsM :: MonadError MultipleErrors m => SynonymMap -> KindMap -> SourceType -> m SourceType #
Replace fully applied type synonyms by explicitly providing a SynonymMap
.
typesOf :: (MonadSupply m, MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => BindingGroupType -> ModuleName -> [((SourceAnn, Ident), Expr)] -> m [((SourceAnn, Ident), (Expr, SourceType))] #
Infer the types of multiple mutually-recursive values, and return elaborated values including type class dictionaries and type annotations.
escalateWarningWhen :: (MonadWriter MultipleErrors m, MonadError MultipleErrors m) => (ErrorMessage -> Bool) -> m a -> m a #
Runs a computation listening for warnings and then escalating any warnings that match the predicate to error status.
onErrorMessages :: (ErrorMessage -> ErrorMessage) -> MultipleErrors -> MultipleErrors #
Lift a function on ErrorMessage to a function on MultipleErrors
onTypesInErrorMessage :: (SourceType -> SourceType) -> ErrorMessage -> ErrorMessage #
getLocalContext :: MonadState CheckState m => m Context #
Get locally-bound names in context, to create an error message.
lookupUnkName :: MonadState CheckState m => Unknown -> m (Maybe Text) #
displaySourcePos :: SourcePos -> Text #
displaySourcePosShort :: SourcePos -> Text #
displaySourceSpan :: FilePath -> SourceSpan -> Text #
widenSourceSpan :: SourceSpan -> SourceSpan -> SourceSpan #
widenSourceAnn :: SourceAnn -> SourceAnn -> SourceAnn #
showAssoc :: Associativity -> String #
readAssoc :: String -> Associativity #
getValOpName :: Name -> Maybe (OpName 'ValueOpName) #
getTypeName :: Name -> Maybe (ProperName 'TypeName) #
getTypeOpName :: Name -> Maybe (OpName 'TypeOpName) #
getDctorName :: Name -> Maybe (ProperName 'ConstructorName) #
getClassName :: Name -> Maybe (ProperName 'ClassName) #
coerceOpName :: OpName a -> OpName b #
codegenTargets :: Map String CodegenTarget #
srcTypeLevelInt :: Integer -> SourceType #
srcKindApp :: SourceType -> SourceType -> SourceType #
srcForAll :: TypeVarVisibility -> Text -> Maybe SourceType -> SourceType -> Maybe SkolemScope -> SourceType #
srcREmpty :: SourceType #
srcRCons :: Label -> SourceType -> SourceType -> SourceType #
mapConstraintArgsAll :: ([Type a] -> [Type a]) -> Constraint a -> Constraint a #
overConstraintArgsAll :: Applicative f => ([Type a] -> f [Type a]) -> Constraint a -> f (Constraint a) #
constraintToJSON :: (a -> Value) -> Constraint a -> Value #
typeToJSON :: forall a. (a -> Value) -> Type a -> Value #
constraintFromJSON :: forall a. Parser a -> (Value -> Parser a) -> Value -> Parser (Constraint a) #
srcRowListItem :: Label -> SourceType -> RowListItem SourceAnn #
addVisibility :: [(Text, TypeVarVisibility)] -> Type a -> Type a #
Add visible type abstractions to top-level foralls.
moveQuantifiersToFront :: Type a -> Type a #
Move all universal quantifiers to the front of a type
unapplyConstraints :: Type a -> ([Constraint a], Type a) #
setAnnForType :: a -> Type a -> Type a #
annForType :: Lens' (Type a) a #
compareType :: Type a -> Type b -> Ordering #
eqConstraint :: Constraint a -> Constraint b -> Bool #
compareConstraint :: Constraint a -> Constraint b -> Ordering #
allPrimTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) #
This Map
contains all of the prim types from all Prim modules.
allPrimClasses :: Map (Qualified (ProperName 'ClassName)) TypeClassData #
This contains all of the type classes from all Prim modules.
computeCoveringSets :: Int -> [FunctionalDependency] -> (Set Int, Set (Set Int)) #
showDataDeclType :: DataDeclType -> Text #
kindDoc :: SourceType #
kindRowList :: SourceType -> SourceType #
tyForall :: Text -> SourceType -> SourceType -> SourceType #
tyVar :: Text -> SourceType #
tyChar :: SourceType #
Type constructor for strings
tyNumber :: SourceType #
Type constructor for numbers
tyArray :: SourceType #
Type constructor for arrays
primClass :: Qualified (ProperName 'ClassName) -> (SourceType -> SourceType) -> [(Qualified (ProperName 'TypeName), (SourceType, TypeKind))] #
primTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) #
The primitive types in the external environment with their
associated kinds. There are also pseudo Fail
, Warn
, and Partial
types
that correspond to the classes with the same names.
primBooleanTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) #
primCoerceTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) #
primOrderingTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) #
primRowTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) #
primRowListTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) #
primSymbolTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) #
primIntTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) #
primTypeErrorTypes :: Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) #
dictTypeName' :: Text -> Text #
binderNamesWithSpans :: Binder -> [(SourceSpan, Ident)] #
isIrrefutable :: Binder -> Bool #
onTypeSearchTypes :: (SourceType -> SourceType) -> TypeSearch -> TypeSearch #
onTypeSearchTypesM :: Applicative m => (SourceType -> m SourceType) -> TypeSearch -> m TypeSearch #
getModuleDeclarations :: Module -> [Declaration] #
Return a module's declarations.
addDefaultImport :: Qualified ModuleName -> Module -> Module #
Add an import declaration for a module if it does not already explicitly import it.
Will not import an unqualified module if that module has already been imported qualified. (See #2197)
getValueRef :: DeclarationRef -> Maybe Ident #
getTypeClassRef :: DeclarationRef -> Maybe (ProperName 'ClassName) #
isModuleRef :: DeclarationRef -> Bool #
mapDataCtorFields :: ([(Ident, SourceType)] -> [(Ident, SourceType)]) -> DataConstructorDeclaration -> DataConstructorDeclaration #
traverseDataCtorFields :: Monad m => ([(Ident, SourceType)] -> m [(Ident, SourceType)]) -> DataConstructorDeclaration -> m DataConstructorDeclaration #
declSourceAnn :: Declaration -> SourceAnn #
isValueDecl :: Declaration -> Bool #
Test if a declaration is a value declaration
isDataDecl :: Declaration -> Bool #
Test if a declaration is a data type declaration
isTypeSynonymDecl :: Declaration -> Bool #
Test if a declaration is a type synonym declaration
isImportDecl :: Declaration -> Bool #
Test if a declaration is a module import
isRoleDecl :: Declaration -> Bool #
Test if a declaration is a role declaration
isExternDataDecl :: Declaration -> Bool #
Test if a declaration is a data type foreign import
isFixityDecl :: Declaration -> Bool #
Test if a declaration is a fixity declaration
isExternDecl :: Declaration -> Bool #
Test if a declaration is a foreign import
isTypeClassInstanceDecl :: Declaration -> Bool #
Test if a declaration is a type class instance declaration
isTypeClassDecl :: Declaration -> Bool #
Test if a declaration is a type class declaration
isKindDecl :: Declaration -> Bool #
Test if a declaration is a kind signature declaration.
isAnonymousArgument :: Expr -> Bool #
mapGuardedExpr :: (Guard -> Guard) -> (Expr -> Expr) -> GuardedExpr -> GuardedExpr #
everythingWithScope :: forall r. Monoid r => (Set ScopedIdent -> Declaration -> r) -> (Set ScopedIdent -> Expr -> r) -> (Set ScopedIdent -> Binder -> r) -> (Set ScopedIdent -> CaseAlternative -> r) -> (Set ScopedIdent -> DoNotationElement -> r) -> (Set ScopedIdent -> Declaration -> r, Set ScopedIdent -> Expr -> r, Set ScopedIdent -> Binder -> r, Set ScopedIdent -> CaseAlternative -> r, Set ScopedIdent -> DoNotationElement -> r) #
accumTypes :: Monoid r => (SourceType -> r) -> (Declaration -> r, Expr -> r, Binder -> r, CaseAlternative -> r, DoNotationElement -> r) #
overTypes :: (SourceType -> SourceType) -> Expr -> Expr #
Map a function over type annotations appearing inside a value
errorSpan :: ErrorMessage -> Maybe (NonEmpty SourceSpan) #
Get the source span for an error
findHint :: (ErrorMessageHint -> Maybe a) -> ErrorMessage -> Maybe a #
errorModule :: ErrorMessage -> Maybe ModuleName #
Get the module name for an error
stripModuleAndSpan :: ErrorMessage -> ErrorMessage #
Remove the module name and span hints from an error
errorCode :: ErrorMessage -> Text #
Get the error code for a particular error type
unwrapErrorMessage :: ErrorMessage -> SimpleErrorMessage #
Extract nested error messages from wrapper errors
errorMessage''' :: [SourceSpan] -> SimpleErrorMessage -> MultipleErrors #
Create an error from multiple (possibly empty) source spans, reversed sorted.
onTypesInErrorMessageM :: Applicative m => (SourceType -> m SourceType) -> ErrorMessage -> m ErrorMessage #
errorDocUri :: ErrorMessage -> Text #
prettyPrintSuggestedTypeSimplified :: Type a -> String #
prettyPrintRef :: DeclarationRef -> Maybe Text #
ansiColor :: (ColorIntensity, Color) -> String #
ansiColorReset :: String #
colorCodeBox :: Maybe (ColorIntensity, Color) -> Box -> Box #
commasAndConjunction :: Text -> [Text] -> Text #
defaultCodeColor :: (ColorIntensity, Color) #
Default color intensity and color for code
prettyPrintSingleError :: PPEOptions -> ErrorMessage -> Box #
Pretty print a single error, simplifying if necessary
toTypelevelString :: Type a -> Maybe Box #
prettyPrintExport :: DeclarationRef -> Text #
prettyPrintImport :: ModuleName -> ImportDeclarationType -> Maybe ModuleName -> Text #
prettyPrintMultipleErrorsBox :: PPEOptions -> MultipleErrors -> [Box] #
Pretty print errors as a Box
prettyPrintMultipleWarnings :: PPEOptions -> MultipleErrors -> String #
Pretty print multiple warnings
prettyPrintMultipleWarningsBox :: PPEOptions -> MultipleErrors -> [Box] #
Pretty print warnings as a Box
prettyPrintMultipleErrorsWith :: PPEOptions -> String -> String -> MultipleErrors -> [Box] #
insertUnkName :: MonadState CheckState m => Unknown -> Text -> m () #
emptySubstitution :: Substitution #
An empty substitution
bindNames :: MonadState CheckState m => Map (Qualified Ident) (SourceType, NameKind, NameVisibility) -> m a -> m a #
Temporarily bind a collection of names to values
bindTypes :: MonadState CheckState m => Map (Qualified (ProperName 'TypeName)) (SourceType, TypeKind) -> m a -> m a #
Temporarily bind a collection of names to types
withScopedTypeVars :: (MonadState CheckState m, MonadWriter MultipleErrors m) => ModuleName -> [(Text, SourceType)] -> m a -> m a #
Temporarily bind a collection of names to types
rethrowWithPositionTC :: (MonadState CheckState m, MonadError MultipleErrors m) => SourceSpan -> m a -> m a #
warnAndRethrowWithPositionTC :: (MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => SourceSpan -> m a -> m a #
withTypeClassDictionaries :: MonadState CheckState m => [NamedDict] -> m a -> m a #
Temporarily make a collection of type class dictionaries available
lookupTypeClassDictionaries :: MonadState CheckState m => QualifiedBy -> m (Map (Qualified (ProperName 'ClassName)) (Map (Qualified Ident) (NonEmpty NamedDict))) #
Lookup type class dictionaries in a module.
lookupTypeClassDictionariesForClass :: MonadState CheckState m => QualifiedBy -> Qualified (ProperName 'ClassName) -> m (Map (Qualified Ident) (NonEmpty NamedDict)) #
Lookup type class dictionaries in a module.
bindLocalVariables :: MonadState CheckState m => [(SourceSpan, Ident, SourceType, NameVisibility)] -> m a -> m a #
Temporarily bind a collection of names to local variables
makeBindingGroupVisible :: MonadState CheckState m => m () #
Update the visibility of all names to Defined
modifyEnv :: MonadState CheckState m => (Environment -> Environment) -> m () #
Modify the Environment
withBindingGroupVisible :: MonadState CheckState m => m a -> m a #
Update the visibility of all names to Defined in the scope of the provided action
preservingNames :: MonadState CheckState m => m a -> m a #
Perform an action while preserving the names from the Environment
.
lookupVariable :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => Qualified Ident -> m SourceType #
Lookup the type of a value by name in the Environment
getVisibility :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => Qualified Ident -> m NameVisibility #
Lookup the visibility of a value by name in the Environment
checkVisibility :: (e ~ MultipleErrors, MonadState CheckState m, MonadError e m) => Qualified Ident -> m () #
Assert that a name is visible
putEnv :: MonadState CheckState m => Environment -> m () #
Update the Environment
runCheck :: Functor m => CheckState -> StateT CheckState m a -> m (a, Environment) #
Run a computation in the typechecking monad, failing with an error, or succeeding with a return value and the final Environment
.
capturingSubstitution :: MonadState CheckState m => (a -> Substitution -> b) -> m a -> m b #
withoutWarnings :: MonadWriter w m => m a -> m (a, w) #
debugEnv :: Environment -> [String] #
debugTypes :: Environment -> [String] #
debugTypeSynonyms :: Environment -> [String] #
debugTypeClasses :: Environment -> [String] #
debugTypeClassDictionaries :: Environment -> [String] #
debugDataConstructors :: Environment -> [String] #
debugNames :: Environment -> [String] #
debugConstraint :: Constraint a -> String #
debugValue :: Expr -> String #
debugSubstitution :: Substitution -> [String] #