[add HsError expression to explicitly represent errors
John Meacham <john@repetae.net>**20061108233131] hunk ./E/FromHs.hs 508
+    cExpr (HsAsPat n HsError { hsExpString = msg }) = do
+        let ty = cType n
+        return $ EError msg ty
hunk ./FrontEnd/Desugar.hs 211
-        els = HsMatch _sloc n [HsPWildCard] (HsUnGuardedRhs (HsApp (HsVar err) (HsLit (HsString (show n))))) []
+        els = HsMatch _sloc n [HsPWildCard] (HsUnGuardedRhs HsError { hsExpSrcLoc = _sloc, hsExpString = show n, hsExpErrorType = HsErrorFieldSelect } ) []
hunk ./FrontEnd/Desugar.hs 214
-    err = nameName $ toUnqualified $ v_error
hunk ./FrontEnd/Desugar.hs 341
-            a2 =  HsAlt sloc HsPWildCard (HsUnGuardedRhs (HsApp (HsVar (nameName $ toUnqualified v_error)) (HsLit $ HsString $ show sloc ++ " failed pattern match in lambda"))) []
+            a2 =  HsAlt sloc HsPWildCard (HsUnGuardedRhs (HsError { hsExpSrcLoc = sloc, hsExpErrorType = HsErrorPatternFailure, hsExpString = show sloc ++ " failed pattern match in lambda" })) []
hunk ./FrontEnd/HsPretty.hs 475
+ppHsExp HsError { hsExpString = msg } = text $ "<error:" ++ msg ++ ">"
hunk ./FrontEnd/HsSyn.hs 279
+data HsErrorType = HsErrorPatternFailure | HsErrorSource | HsErrorFieldSelect | HsErrorUnderscore | HsErrorUninitializedField | HsErrorRecordUpdate
+ deriving(Data,Typeable,Eq,Show)
+
hunk ./FrontEnd/HsSyn.hs 309
+        | HsError { hsExpSrcLoc :: SrcLoc, hsExpErrorType :: HsErrorType, hsExpString :: String }
hunk ./FrontEnd/Rename.hs 751
-    e <- createError ("_")
+    e <- createError HsErrorUnderscore ("_")
hunk ./FrontEnd/Rename.hs 758
-createError s = do
+createError et s = do
hunk ./FrontEnd/Rename.hs 760
-    let pe = (HsVar (nameName v_error))
-    return $ HsParen $ HsApp pe (HsLit (HsString (show sl ++ ": " ++ s)))
+    return $ HsError { hsExpSrcLoc = sl, hsExpErrorType = et, hsExpString = (show sl ++ ": " ++ s) }
hunk ./FrontEnd/Rename.hs 769
-    undef <- createError "Uninitialized Field"
+    undef <- createError HsErrorUninitializedField "Uninitialized Field"
hunk ./FrontEnd/Rename.hs 803
-        pe <- createError "Record Update Error"
-        v <- newVar
-        return $ HsCase n (as ++ [HsAlt sl (HsPVar v) (HsUnGuardedRhs pe) []])
+        pe <- createError HsErrorRecordUpdate "Record Update Error"
+        return $ HsCase n (as ++ [HsAlt sl HsPWildCard (HsUnGuardedRhs pe) []])
hunk ./FrontEnd/Syn/Traverse.hs 34
+    f e@HsError {} = return e
hunk ./FrontEnd/Tc/Main.hs 165
+
+tiExpr err@HsError {} typ = do
+    unBox typ
+    (ne,n) <- wrapInAsPat err
+    addToCollectedEnv (Map.singleton n typ)
+    return ne