| Copyright | disco team and contributors |
|---|---|
| License | BSD-3-Clause |
| Maintainer | byorgey@gmail.com |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Disco.Error
Description
Type for collecting all potential Disco errors at the top level, and a type for runtime errors.
Synopsis
- data DiscoError where
- ModuleNotFound :: String -> DiscoError
- CyclicImport :: [ModuleName] -> DiscoError
- TypeCheckErr :: LocTCError -> DiscoError
- ParseErr :: ParseErrorBundle String DiscoParseError -> DiscoError
- EvalErr :: EvalError -> DiscoError
- Panic :: String -> DiscoError
- data EvalError where
- UnboundError :: QName core -> EvalError
- UnboundPanic :: Name core -> EvalError
- DivByZero :: EvalError
- Overflow :: EvalError
- NonExhaustive :: EvalError
- InfiniteLoop :: EvalError
- Crash :: String -> EvalError
- panic :: Member (Error DiscoError) r => String -> Sem r a
- outputDiscoErrors :: Member (Output (Message ann)) r => Sem (Error DiscoError ': r) () -> Sem r ()
Documentation
data DiscoError where Source #
Top-level error type for Disco.
Constructors
| ModuleNotFound :: String -> DiscoError | Module not found. |
| CyclicImport :: [ModuleName] -> DiscoError | Cyclic import encountered. |
| TypeCheckErr :: LocTCError -> DiscoError | Error encountered during typechecking. |
| ParseErr :: ParseErrorBundle String DiscoParseError -> DiscoError | Error encountered during parsing. |
| EvalErr :: EvalError -> DiscoError | Error encountered at runtime. |
| Panic :: String -> DiscoError | Something that shouldn't happen; indicates the presence of a bug. |
Instances
| Show DiscoError Source # | |
Defined in Disco.Error Methods showsPrec :: Int -> DiscoError -> ShowS # show :: DiscoError -> String # showList :: [DiscoError] -> ShowS # | |
| Pretty DiscoError Source # | |
Errors that can be generated at runtime.
Constructors
| UnboundError :: QName core -> EvalError | An unbound name was encountered. |
| UnboundPanic :: Name core -> EvalError | An unbound name that really shouldn't happen, coming from some kind of internal name generation scheme. |
| DivByZero :: EvalError | Division by zero. |
| Overflow :: EvalError | Overflow, e.g. (2^66)! |
| NonExhaustive :: EvalError | Non-exhaustive case analysis. |
| InfiniteLoop :: EvalError | Infinite loop detected via black hole. |
| Crash :: String -> EvalError | User-generated crash. |
outputDiscoErrors :: Member (Output (Message ann)) r => Sem (Error DiscoError ': r) () -> Sem r () Source #