One more GHC.Err import eliminated
[packages/base.git] / GHC / Err.lhs
1 \begin{code}
2 {-# LANGUAGE Trustworthy #-}
3 {-# LANGUAGE CPP, NoImplicitPrelude, MagicHash #-}
4 {-# OPTIONS_HADDOCK hide #-}
5
6 -----------------------------------------------------------------------------
7 -- |
8 -- Module      :  GHC.Err
9 -- Copyright   :  (c) The University of Glasgow, 1994-2002
10 -- License     :  see libraries/base/LICENSE
11 -- 
12 -- Maintainer  :  cvs-ghc@haskell.org
13 -- Stability   :  internal
14 -- Portability :  non-portable (GHC extensions)
15 --
16 -- The "GHC.Err" module defines the code for the wired-in error functions,
17 -- which have a special type in the compiler (with \"open tyvars\").
18 -- 
19 -- We cannot define these functions in a module where they might be used
20 -- (e.g., "GHC.Base"), because the magical wired-in type will get confused
21 -- with what the typechecker figures out.
22 -- 
23 -----------------------------------------------------------------------------
24
25 -- #hide
26 module GHC.Err( absentErr, error, undefined ) where
27 import GHC.CString ()
28 import GHC.Types
29 import GHC.Prim
30 import GHC.Integer ()   -- Make sure Integer is compiled first
31                         -- because GHC depends on it in a wired-in way
32                         -- so the build system doesn't see the dependency
33 import {-# SOURCE #-} GHC.Exception( errorCallException )
34 \end{code}
35
36 %*********************************************************
37 %*                                                      *
38 \subsection{Error-ish functions}
39 %*                                                      *
40 %*********************************************************
41
42 \begin{code}
43 -- | 'error' stops execution and displays an error message.
44 error :: [Char] -> a
45 error s = raise# (errorCallException s)
46
47 -- | A special case of 'error'.
48 -- It is expected that compilers will recognize this and insert error
49 -- messages which are more appropriate to the context in which 'undefined'
50 -- appears. 
51
52 undefined :: a
53 undefined =  error "Prelude.undefined"
54 \end{code}
55
56 %*********************************************************
57 %*                                                       *
58 \subsection{Compiler generated errors + local utils}
59 %*                                                       *
60 %*********************************************************
61
62 Used for compiler-generated error message;
63 encoding saves bytes of string junk.
64
65 \begin{code}
66 absentErr :: a
67 absentErr = error "Oops! The program has entered an `absent' argument!\n"
68 \end{code}
69