diff options
Diffstat (limited to 'src/CHAD/AST/Pretty.hs')
| -rw-r--r-- | src/CHAD/AST/Pretty.hs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/CHAD/AST/Pretty.hs b/src/CHAD/AST/Pretty.hs index 9ddcb35..d9ac8b2 100644 --- a/src/CHAD/AST/Pretty.hs +++ b/src/CHAD/AST/Pretty.hs @@ -374,6 +374,15 @@ ppExpr' d val expr = case expr of EError _ _ s -> return $ ppParen (d > 10) $ ppString "error" <> ppX expr <+> ppString (show s) + EUser _ t@STUser{} e -> do + e' <- ppExpr' 11 val e + return $ ppParen (d > 10) $ + ppApp (ppString ("user[" ++ show (typeOfProxy t) ++ "]") <> ppX expr) [e'] + + EUnUser _ e -> do + e' <- ppExpr' 11 val e + return $ ppParen (d > 10) $ ppApp (ppString "unuser" <> ppX expr) [e'] + ppExprLet :: PrettyX x => Int -> SVal env -> Expr x env t -> M ADoc ppExprLet d val etop = do let collect :: PrettyX x => SVal env -> Expr x env t -> M ([(String, Occ, ADoc)], ADoc) @@ -421,6 +430,7 @@ ppSparse (SMTLEither t1 t2) (SpLEither s1 s2) = "(" ++ ppSparse t1 s1 ++ "|" ++ ppSparse (SMTMaybe t) (SpMaybe s) = "M" ++ ppSparse t s ppSparse (SMTArr _ t) (SpArr s) = "A" ++ ppSparse t s ppSparse (SMTScal _) SpScal = "." +ppSparse (SMTUser _) SpUser = "U" ppCommut :: Commutative -> String ppCommut Commut = "(C)" @@ -469,6 +479,7 @@ ppSTy' _ (STScal sty) = ppString $ case sty of STF64 -> "f64" STBool -> "bool" ppSTy' d (STAccum t) = ppParen (d > 10) $ ppString "Accum " <> ppSMTy' 11 t +ppSTy' d (STUser t) = ppParen (d > 10) $ ppString ("User " ++ showsPrec 11 (typeOfProxy t) "") ppSMTy :: Int -> SMTy t -> String ppSMTy d ty = render $ ppSMTy' d ty @@ -485,6 +496,7 @@ ppSMTy' _ (SMTScal sty) = ppString $ case sty of STI64 -> "i64" STF32 -> "f32" STF64 -> "f64" +ppSMTy' d (SMTUser t) = ppSTy' d (STUser t) ppString :: String -> Doc x ppString = fromString |
